正则表达式使用两个更改来匹配文本

时间:2014-02-18 20:56:34

标签: c# regex

我正在尝试在RegEx(C#)中实现以下功能:

模式应与单词匹配(例如aaa)。这个单词可以有一个前缀,可以是三个选项之一(比如a,b,c)。

问题是,我正在寻找的单词可以是前缀+其他单词的组合。例如,单词aaaa是一个单独的单词,但也是前缀a和单词aaa。

我可以使用哪种模式,以便像这样的单词(aaaa)匹配单词,而不是前缀+短单词?

我现在使用的模式是:

(?<prefix>a|b|c)?(?<word>aaa|aaaa)

但是,如上所述,此模式将aaaa与带有前缀'a'的'aaa'字匹配。

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该可以通过添加空前缀来执行此操作,只需在第一个实际前缀之前添加|

(?<prefix>|a|b|c)(?<word>aaaa|aaa)

当然,使用空前缀,您不再需要使您的前缀组可选,因为它将尝试匹配的第一件事是空前缀。

请注意,我也改变了你的单词的顺序(aaaa之前的aaa),一般情况下,如果你在一个交替中有多个表达式,其中一个是另一个的前缀,你想放置先长一点。

示例:http://rubular.com/r/bZfAy89xkR