假设我检查一个字符串是否与带有通配符的正则表达式匹配。我怎样才能以编程方式获取子字符串替换通配符的提取?
简单示例:正则表达式为"[foo|bar].*\.txt"
并且说,找到的匹配字符串是“foo123.txt”。在这种情况下,我想要的答案是“123”,因为它是替换通配符的子字符串。如果匹配的字符串是bar0123456789.txt,那么答案是0123456789。
我使用c#,但我不介意其他语言的答案,我也可以在c#
中实现答案 0 :(得分:1)
如果您想要一个团体,请不要使用方括号。方括号创建character class。
你想要的是non capturing group:
(?:foo|bar).*\.txt
要从.*
获取结果(.
是与任何字符匹配的特殊字符,但Newline字符(默认情况下)和*
是quantifier,重复前一个字符0次或更多次,你需要将它放入capturing group。
(?:foo|bar)(.*)\.txt