繁体   English   中英

正则表达式某些字符可以存在或不存在但之后没有

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM