【发布时间】:2018-05-17 15:18:25
【问题描述】:
我正在尝试编写一个正则表达式来匹配以下文本:
-
一个字母
f、s或t - 多次:
- 至少一位数字
-
一个字母
f、s或t
这是我想出的正则表达式:(f|s|t)(\d+(f|s|t))*,但它似乎不起作用。
输入:f20s30t
预期匹配:
- f
- 20 秒
- 30吨
实际匹配:
f30tt
为什么我的正则表达式错误?
编辑:我正在使用this 方法来拆分输入。
【问题讨论】:
-
“匹配”是指捕获,对吧?目前还不太清楚你在做什么。实际上,您可能只会得到与
\d*[fst]的多个匹配项。在 .NET 中,您可以通过访问与某个组相关的捕获集合来获取所有捕获。它是整个字符串还是较长文本的一部分? -
@WiktorStribiżew 我在 C# 中使用正则表达式拆分,但我认为这与问题无关。您可以在 regex101.com 中自己测试正则表达式
-
哦,这非常相关,因为您不应该在 regex101 测试 .NET 正则表达式模式,因为它不支持 .NET 正则表达式。那么,这是整个字符串还是较长文本的一部分?
-
我认为您对匹配组比较感兴趣。你是?您只给出了一个示例-当您向陌生人询问正则表达式时还不够。举几个正面的例子和负面的例子。
-
@WiktorStribiżew 我编辑了问题,谢谢