将2个正则表达式规则合并为一个



正则表达式中是否有特殊字符可加入规则组

我需要匹配每行中的前2个字符和最后2个数字

这与的前2个字符相匹配

(^..) 

这与的最后两个数字相匹配

([0-9][0-9]$)

如何加入这两条规则?尝试过,但没有成功

(^..)([0-9][0-9]$)

您还需要匹配两者之间的部分。只允许任意多个任意字符:

(^..).*([0-9][0-9]$)

请注意,在大多数口味中,.与换行符不匹配。如果您的输入可能包含换行符,请使用s("单行"或有时是"点通")修饰符来更改.的含义。否则(即在JavaScript中)使用[sS]*

还要注意,连续使用两个正则表达式可能更容易、更可读、更高效:

^..
[0-9][0-9]$

无需分组/捕获和重复。

编辑:

请注意,这两个并不完全等同。第一个至少需要四个字符(因为..匹配的两个字符不能再由[0-9][0-9]匹配),而第二个可能只包含两个数字(在这种情况下,..将匹配这些相同的数字)。这取决于您正在寻找这些语义中的哪一个。第三个只使用一个正则表达式但与两个正则表达式解决方案等效的解决方案将使用lookahead:

^(?=(..))(?=.*([0-9][0-9])$)

这将允许您匹配x12,第一个捕获是x1,第二个是12

感谢Alan Moore指出这一点。

您需要添加anything goes here,也称为.*

(^..).*([0-9][0-9]$)
(^..).*([0-9][0-9]$)

您可以使用.*修饰符来匹配"介于两者之间的所有内容"

如果该行在"前两个"one_answers"后两个"之间包含其他字符,则正则表达式中需要一些内容来匹配插入的字符;类似于:

(^..).*([0-9][0-9]$) 

相关内容

最新更新