如何检查文本是否以某些特定字符串结尾,例如(2)?

时间:2015-07-03 05:52:39

标签: c# regex

我有以下字符串集,我需要测试是否有任何字符串以特定模式"(\d)"结束。

atat_vav(1)    
atat_(2)vav(1)  
atat_(2)vav  
atat_(2)vav(1)(12)  
atat_(2)vav(1)(3)  

我试过下面的正则表达式只告诉我它包含如下模式:

\((\d*?)\)

但是我已经检查过它必须只包含在字符串的末尾。它应该在测试中失败第三个字符串 修改:更正表达

 \((\d+)\)$

如果通过测试,我如何获得括号之间的最后一位数?

(1) => 1

解决方案:在匹配的组中,您会发现匹配的内容只是替换了\ 1后面的引用,结果会得到1。

Regex Test

3 个答案:

答案 0 :(得分:2)

使用$行锚的结尾)断言我们在行尾。

@"\((\d*)\)$"

DEMO

答案 1 :(得分:1)

最后使用(?= \ n | $)。这将匹配新行或END。

\((\d*?)\)(?=\n|$)

答案 2 :(得分:1)

@"\((\d+)\)$" 

如果括号之间的数字是强制性的

如果它是一个我之前没有注意到的c#你可以进行下面的操作以获得最后一个大括号之间的值

Regex.Match("User (10) name (20)", @"\((\d+)\)$").Groups[1].Value;