需要有关 .NET 中的正则表达式的帮助

Need Assistance with a RegEx in .NET

提问人:Brian 提问时间:4/14/2023 最后编辑:Brian 更新时间:4/14/2023 访问量:35

问:

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

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

所以:

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

例子:

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

我试过这个:

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

但它似乎也正在拾取字符串的其他不匹配部分。

字符串中可以有多个这些模式的实例,但我不需要匹配每个实例,我只需要查看字符串中是否至少有一个模式实例。

.NET 正则表达式

评论

1赞 phuzi 4/14/2023
怎么样?这应该匹配吗?("/")

答:

3赞 The fourth bird 4/14/2023 #1

在 .NET 中,可以编写如下模式:

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

请参阅正则表达式演示.NET 演示

或者使用转义的反斜杠:

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

该模式匹配:

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

示例代码:

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

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

评论

0赞 Wiktor Stribiżew 4/14/2023
您只需要在逐字字符串文字中加双引号。OP 使用常规字符串文字。
0赞 Brian 4/14/2023
我在我的原始帖子中添加了更多澄清,如果您不介意再快速浏览一下。对于您的建议,它是这样的:还是像这样:,还是完全不同的东西?myregex = "\(\"\"[^/\"\"]*/[^\"\"]*\"\"\)"myregex = @"\(\"\"[^/\"\"]*/[^\"\"]*\"\"\)"
0赞 The fourth bird 4/14/2023
@Brian 我添加了带有代码的正则表达式作为示例。