点字符与文字匹配

时间:2019-09-02 03:53:43

标签: regex

我有如下正则表达式:

random(\.test\.)?.\s*.*
random.test.asdrandom.asda匹配的

。我想使用\.,以使单词test可以出现在文本中,也可以不出现。但是添加

random(\.test\.)?\.\s*.*

只需破坏整个正则表达式即可。

2 个答案:

答案 0 :(得分:0)

我的猜测是,也许您正在尝试编写一个表达式,有点类似于:

^random(?:\.test)?\.[^.\r\n]*$

  

如果您想探索/简化/修改表达式,可以   在右上角的面板上进行了说明   regex101.com。如果您愿意,   也可以在this link中观看它的匹配方式   针对一些样本输入。


答案 1 :(得分:0)

很明显,您正在尝试make a part of regex optional,但是问题是您已经有一些错误的模式。 random(\.test\.)?.\s*.*模式与randomrandom.test.之后的任何1个字符(换行符除外)匹配,即它是必需的。模式的其余部分-0+空格,然后是任何0+非换行符-甚至都不需要匹配。一旦您转义了未转义的.,就可以匹配random.test..some-th ingrandom.some-th ing之类的字符串,但不能匹配random.test.something

您应移动分组边界

random(?:\.test)?\.\s*.*
      ^^^^^^^^^^^^^

请参见regex demo详细信息

  • random-文字字符串
  • (?:\.test)?-可选的.test子字符串(一个可选的?量词,在其与一系列模式匹配之后,并不捕获)
  • \.-一个点
  • \s*-超过0个空格
  • .*-除换行符以外的任何0+字符。

请参见regex graph

enter image description here