正则表达式模式未命中匹配2个字符

时间:2015-06-03 17:19:44

标签: regex

使用regex101我开发了这个正则表达式:

^(\S+)\s_(\S)(\S[^;\s]+)?.*

这适用于99.999%的时间,但偶尔会对包含应该匹配的2个字符的字符串运行。

例如,它通常会捕捉......

string _asdf = string.empty;
bool _ttfnow;
//$1 = string
//$2 = a
//$3 = sdf
and
//$1 = bool
//$2 = t
//$3 = tfnow

但由于某种原因,这与第三组无法匹配?

string _qw = string.empty;
//$1 = string
//$2 = q
//$3 = 

再次使用regex101如果add添加一个char它会突然匹配,所以:

string _qwx = string.empty;
//$1 = string
//$2 = q
//$3 = wx

有什么想法吗?谢谢

2 个答案:

答案 0 :(得分:1)

^(\S+)\s_(\S)(\S[^;\s]*)?.*

                     ^^

只需更改量词。参见演示。

https://regex101.com/r/pG1kU1/33

答案 1 :(得分:1)

[^;\s]+将其更改为[^;\s]*

/^(\S+)\s_(\S)(\S[^;\s]*)?.*/