我正在尝试编写一个正则表达式,但它太贪心了。输入字符串可以采用以下格式之一:
STUFF_12_1234 or STUFF_1234
我想要做的是创建一个正则表达式来抓取最后一个之后的字符_
。所以在上面的例子中,这将是数字“1234”。最后一个之后的字符数_
各不相同,它们可以是字母和数字的组合。我尝试过以下表达:
_(.*?)\Z
这适用于“STUFF_1234”,返回“1234”,但是当我将它用于“STUFF_12_1234”时,它返回“12_1234”
有人建议如何更改表达式来解决这个问题吗?
至少有 3 种方法可以获取最后一个下划线之后出现的文本_
:
保留当前的正则表达式,但指定RightToLeft http://msdn.microsoft.com/en-sg/library/yd1hzczs.aspx RegexOptions
。由于正则表达式是从右到左搜索的,因此惰性量词将匹配尽可能少的字符,直到最后一个字符之后_
在字符串中。
-
修改正则表达式以禁止下划线_
在您要匹配的文本中:
_([^_]*)\Z
将输入字符串分割为_
并选择最后一项。为了这String.Split http://msdn.microsoft.com/en-sg/library/system.string.split.aspx就足够了,不需要Regex.Split http://msdn.microsoft.com/en-sg/library/system.text.regularexpressions.regex.split.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)