我有如下正则表达式:
random(\.test\.)?.\s*.*
与random.test.asd
和random.asda
匹配的。我想使用\.
,以使单词test
可以出现在文本中,也可以不出现。但是添加
random(\.test\.)?\.\s*.*
只需破坏整个正则表达式即可。
答案 0 :(得分:0)
我的猜测是,也许您正在尝试编写一个表达式,有点类似于:
^random(?:\.test)?\.[^.\r\n]*$
如果您想探索/简化/修改表达式,可以 在右上角的面板上进行了说明 regex101.com。如果您愿意, 也可以在this link中观看它的匹配方式 针对一些样本输入。
答案 1 :(得分:0)
很明显,您正在尝试make a part of regex optional,但是问题是您已经有一些错误的模式。 random(\.test\.)?.\s*.*
模式与random
或random.test.
之后的任何1个字符(换行符除外)匹配,即它是必需的。模式的其余部分-0+空格,然后是任何0+非换行符-甚至都不需要匹配。一旦您转义了未转义的.
,就可以匹配random.test..some-th ing
或random.some-th ing
之类的字符串,但不能匹配random.test.something
。
您应移动分组边界:
random(?:\.test)?\.\s*.*
^^^^^^^^^^^^^
请参见regex demo。 详细信息
random
-文字字符串(?:\.test)?
-可选的.test
子字符串(一个可选的?
量词,在其与一系列模式匹配之后,并不捕获)\.
-一个点\s*
-超过0个空格.*
-除换行符以外的任何0+字符。请参见regex graph: