需要.NET中RegEx的帮助

whitzsjs  于 2023-04-22  发布在  .NET
关注(0)|答案(1)|浏览(104)

在.NET中,我试图匹配这样的模式:

("any character in here as long as one or more forward slashes / is also in here//")

所以:

  • 打开帕伦
  • 双引号
  • 任何字符,只要至少包含一个正斜杠
  • 双引号
  • 关闭帕伦

示例:

  • 测试:“blah”→不匹配
  • 测试:(“blah”)→不匹配
  • 测试:“blah//blah too”→不匹配
  • 测试:(废话)→不匹配
  • 测试:“blah/blah too”→不匹配
  • TEST:(“blah//BLAH too”)→MATCH
  • TEST:(“Blah/blah too”)→MATCH
  • TEST:(“//blah/blah-Another blah”)→MATCH
  • TEST:(“blah blah blah-anotherblah//”)→MATCH

我试过这个:

public const String myRegEx = "\\(\"[^)\\n\\r\\t](.*)[\\/]+(.*)\"\\)";
Regex forwardSlashesRegEx = new Regex(myRegEx);
if(forwardSlashesRegEx.IsMatch(mystring)){
    // do something ...
}

但它似乎也在拾取字符串中不匹配的其他部分。
字符串中可以有多个这些模式的示例,但我不需要匹配每个示例,我只需要看看字符串中是否至少有一个模式的示例。

des4xlb0

des4xlb01#

在.NET中,你可以这样写模式:

const String myRegEx = @"\(""[^/""]*/[^""]*""\)";

参见regex demo.NET demo
或者使用转义反斜杠:

const String myRegEx = "\\(\"[^/\"]*/[^\"]*\"\\)";

模式匹配:

  • \\(\"匹配("
  • [^/\"]*匹配/"以外的字符(如果不想交叉匹配换行符和制表符,也可以添加\\n\\r\\t
  • /按字面匹配
  • [^\"]*匹配"以外的字符
  • \"\\)匹配")

示例代码:

string mystring = "...";
const String myRegEx = "\\(\"[^/\"]*/[^\"]*\"\\)";
Regex forwardSlashesRegEx = new Regex(myRegEx);

if(forwardSlashesRegEx.IsMatch(mystring)){
    // do something
}

相关问题