【发布时间】:2019-03-04 15:48:07
【问题描述】:
正则表达式 (?=.*?[A-Z]) 中 = 的用途是什么?为什么是 ?和 * 在 [a-z] 前面,因为我在书中看到它们应该出现在它们应该生效的单词或表达式的后面,为什么是这两个?
【问题讨论】:
正则表达式 (?=.*?[A-Z]) 中 = 的用途是什么?为什么是 ?和 * 在 [a-z] 前面,因为我在书中看到它们应该出现在它们应该生效的单词或表达式的后面,为什么是这两个?
【问题讨论】:
整个正则表达式
(?=.*?[A-Z])
被称为lookahead assertion,一种lookarounds。
它由三个项目组成:
(?= )
.*?
[A-Z]
第一个是前瞻断言的语法。该模式将出现在括号中,位于最初的 ?= 之后。
第二个是匹配任何字符的点,带有重复修饰符*?,其中的 asserisk 表示“零个或多个匹配”,问号表示“尽可能少匹配”而不是贪婪。
我想你知道第三个。
环视断言限制模式的周围,而不匹配(捕获)额外的东西。例如:
a(?=b)
将匹配ab 中的字母a,但不匹配ac。注意它只匹配字母a,而字母b 只是关于where应该匹配字母a 的限制。而a(b) 匹配ab 中的两个字母并捕获后者。
【讨论】: