是否有可能知道在正则表达式比较中哪个字符串替换了通配符?

时间:2012-09-27 06:38:47

标签: regex language-agnostic

假设我检查一个字符串是否与带有通配符的正则表达式匹配。我怎样才能以编程方式获取子字符串替换通配符的提取?

简单示例:正则表达式为"[foo|bar].*\.txt"并且说,找到的匹配字符串是“foo123.txt”。在这种情况下,我想要的答案是“123”,因为它是替换通配符的子字符串。如果匹配的字符串是bar0123456789.txt,那么答案是0123456789。

我使用c#,但我不介意其他语言的答案,我也可以在c#

中实现

1 个答案:

答案 0 :(得分:1)

如果您想要一个团体,请不要使用方括号。方括号创建character class

你想要的是non capturing group

(?:foo|bar).*\.txt

要从.*获取结果(.是与任何字符匹配的特殊字符,但Newline字符(默认情况下)和*quantifier,重复前一个字符0次或更多次,你需要将它放入capturing group

(?:foo|bar)(.*)\.txt