0

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

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

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

4

1 回答 1

1

如果你想要一个组,不要使用方括号。方括号创建一个字符类

你想要的是一个非捕获组

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

要从.*(.是匹配任何字符的特殊字符,但换行符(默认情况下)并且*是重复前一个字符 0 次或更多次的量词)获取结果,您需要将其放入捕获组中。

(?:foo|bar)(.*)\.txt
于 2012-09-27T06:50:20.077 回答