正则表达式忽略文本"(10)"

时间:2015-02-13 09:12:58

标签: c# regex

我正在使用这个正则表达式来查找确切的字符串,但它往往会忽略后面的字符串,

这有效,

var textFragmentAbsorber = new TextFragmentAbsorber(@"internal(?=\s|$)");

这不,

var textFragmentAbsorber = new TextFragmentAbsorber(@"internal (10) Ab(?=\s|$)");

通过不起作用我的意思是它没有找到文本“internal(10)Ab”

Full code reference

我得到的文字来自网络服务,所以我所能做的就是在结尾添加正则表达式...它可以是(10)或(((((1000,我无法想象)

2 个答案:

答案 0 :(得分:6)

internal \(10\) Ab(?=\s|$)

你需要转义()()具有特殊意义,它用于分组。如果你想要文字(),你必须逃避它。参见演示。

https://www.regex101.com/r/rK5lU1/8

如果可以是(10)((((10000))))

然后尝试internal \(*\d+\)* Ab(?=\s|$)

答案 1 :(得分:4)

在正则表达式中,()是特殊的元字符,表示捕获组的开始和结束。您需要按顺序转义括号以匹配文字()符号。

var textFragmentAbsorber = new TextFragmentAbsorber(@"internal \(10\) Ab(?=\s|$)");