繁体   English   中英

这是怎么回事?运营商在正则表达式中工作?

[英]How does this ? operator work in regex?

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

我看到这张贴在某人的代码中。 这是一个有效的正则表达式吗? 我知道? 应该像abc?一样使它之前的项目可选abc? 使c可选。 但是? 是一个捕获支架的开始。 那是什么意思?

? 单独表示:选择匹配之前的内容。

但是, (? .. )用于断言......

在你的情况下, (?=是一个前瞻断言,意思是:如果只是匹配(括号中的内容),则跟随。

参考


(?:......)

非捕获括号。 对包含的模式进行分组,但不提供匹配文本的捕获。 比捕获括号更有效。

(?> ...)

原子匹配括号。 括号内的子表达式的第一个匹配是唯一尝试过的; 如果它没有导致整体模式匹配,则将搜索匹配到“(?>”之前的位置

(?#...)

自由格式评论(?#comment)。

(?= ...)

前瞻性断言。 如果带括号的模式在当前输入位置匹配,但不提前输入位置,则为真。

(?!...)

否定的前瞻性断言。 如果括号模式在当前输入位置不匹配,则为True。 不提前输入位置。

(?<= ...)

后瞻性断言。 如果带括号的模式与当前输入位置之前的文本匹配,则为真,其中匹配的最后一个字符是当前位置之前的输入字符。 不改变输入位置。 由后视图案匹配的可能字符串的长度不得无限制(无*或+运算符。)

(?<!......)

负面的后瞻性断言。 如果带括号的模式与当前输入位置之前的文本不匹配,则为真,其中匹配的最后一个字符是当前位置之前的输入字符。 不改变输入位置。 由后视图案匹配的可能字符串的长度不得无限制(无*或+运算符。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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