[英]regex certain character can exist or not but nothing after that
我是正则表达式的新手,我正在尝试搜索几个字符串。
我想检查字符串中是否存在某个字符,在本例中为“:”(不带引号)。
If: does not exist in the string it still match, but if: exist there should be nothing after that only space and new line will be allowed.
我有这种模式,但它似乎并没有像我想要的那样工作。
(.*)(:?\s*\n*)
谢谢你。
如果我正确理解了您的问题, ^[^:]*(:\\s*)?$
让我们分解一下:
^
起锚; 如果没有此设置,则每次看到另一个冒号或冒号后出现非空白时,匹配项都可以重新启动。
[^:]*
匹配任意数量的不是冒号的字符; 这样,如果整个字符串是非冒号字符,则将该字符串视为有效匹配项。
(:\\s*)?
如果在任何时候我们都看到冒号,则后面的所有字符都必须为空格,直到字符串末尾为止。 分组括号和以下内容?
使其成为全有条件声明。
$
结尾锚; 没有这个,正则表达式将不会知道,如果看到冒号,则以下空白必须持续到字符串末尾。
这是一个应该起作用的模式
/^([^:]*|([^:]*:\s*))$/
您可以使用管道来管理替代方案
另一种方法是:
^[^:]*(|:[\n]*)$
^[^:]* => 以以下任何内容开头:
(|:[\n]*)$ => 要么完全没有结尾,要么以 ':' 结尾,后跟换行符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.