Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 将2条正则表达式规则合并为一条规则_Regex - Fatal编程技术网

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

Regex 将2条正则表达式规则合并为一条规则,regex,Regex,在正则表达式中是否有一个特殊字符可以加入规则组 我需要匹配每行的前2个字符和最后2个数字 这与前两个字符匹配 (^..) 这与最后2个数字匹配 ([0-9][0-9]$) 如何加入这两条规则? 你试过了,但没有成功 (^..)([0-9][0-9]$) 嗯,你也需要匹配中间的部分。只允许任意多个任意字符: (^..).*([0-9][0-9]$) (^..).*([0-9][0-9]$) 请注意,在大多数版本中,与换行符不匹配。如果您的输入可能包含换行符,请使用s(“单行”或有时使用

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

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

这与前两个字符匹配

(^..) 
这与最后2个数字匹配

([0-9][0-9]$)
如何加入这两条规则? 你试过了,但没有成功

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

嗯,你也需要匹配中间的部分。只允许任意多个任意字符:

(^..).*([0-9][0-9]$)
(^..).*([0-9][0-9]$)
请注意,在大多数版本中,
与换行符不匹配。如果您的输入可能包含换行符,请使用
s
(“单行”或有时使用“dotall”)修饰符来更改
s的含义。否则(即在JavaScript中)使用
[\s\s]*

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

^..
[0-9][0-9]$
无需分组/捕获和重复

编辑:

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

^(?=(..))(?=.*([0-9][0-9])$)
这将允许您匹配
x12
,第一个捕获是
x1
,第二个捕获是
12


感谢您的支持。

您还需要将两者之间的零件进行匹配。只允许任意多个任意字符:

(^..).*([0-9][0-9]$)
(^..).*([0-9][0-9]$)
请注意,在大多数版本中,
与换行符不匹配。如果您的输入可能包含换行符,请使用
s
(“单行”或有时使用“dotall”)修饰符来更改
s的含义。否则(即在JavaScript中)使用
[\s\s]*

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

^..
[0-9][0-9]$
无需分组/捕获和重复

编辑:

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

^(?=(..))(?=.*([0-9][0-9])$)
这将允许您匹配
x12
,第一个捕获是
x1
,第二个捕获是
12


谢谢。

您需要添加
此处的任何内容
-也称为*


您需要添加
此处的任何内容
-也称为*

您可以使用.*修改器匹配“中间的所有内容”


您可以使用.*修改器匹配“中间的所有内容”

如果行包含“前两个”和“后两个”之间的其他字符,那么您需要正则表达式中的某些内容来匹配中间的字符;比如:

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

如果行包含“前两个”和“后两个”之间的附加字符,那么您需要正则表达式中的某些内容来匹配中间的字符;比如:

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


德拉特。比我快3秒:)@TimPietzcker你早些时候赢了;)。哇,5个相同的答案。我想我以前没见过。你的两个解决方案是不同的。第一个要求字符串长度至少为四个字符,而第二个将匹配字符串,如
x12
(返回
x1
12
)和
12
(返回
12
,两个值)。谢谢。。。但这些表达方式与整条线相符。它也在匹配中间的文本。我需要匹配表达式中的前两个字母和最后两个数字。我所有的行都以两个数字结尾。@GuilhermeLongo,你在使用什么语言或环境?有一种方法可以访问这两个东西,就像括号中的一样。比我快3秒:)@TimPietzcker你早些时候赢了;)。哇,5个相同的答案。我想我以前没见过。你的两个解决方案是不同的。第一个要求字符串长度至少为四个字符,而第二个将匹配字符串,如
x12
(返回
x1
12
)和
12
(返回
12
,两个值)。谢谢。。。但这些表达方式与整条线相符。它也在匹配中间的文本。我需要匹配表达式中的前两个字母和最后两个数字。我所有的行都以两个数字结尾。@GuilhermeLongo,你在使用什么语言或环境?有一种方法可以访问这两种内容,因为它们是通过括号访问的。您使用的是哪种语言/环境/正则表达式风格?您使用的是哪种语言/环境/正则表达式风格?它也与中间的文本相匹配。我需要匹配表达式中的前两个字母和最后两个数字。我所有的行都以两个数字结尾。它也与中间的文本相匹配。我需要匹配表达式中的前两个字母和最后两个数字。我所有的行都以两个数字结尾。但是我想排除中间的所有内容。我只需要前两个字母和最后两个数字括号中是正则表达式的“捕获”。由于。*不在带括号的内部,因此不会捕获它。只捕获前两个字母和最后两个数字。但我想排除这两个字母之间的所有内容。我只需要前两个字母和最后两个数字括号中是正则表达式的“捕获”。由于。*不在带括号的内部,因此不会捕获它。仅捕获前2个字母和最后2个数字。