我对正则表达式有疑问。鉴于正则表达式的这一部分:
(.[^\\.]+)
部分[^\.]+
这是否意味着在第一个点之前获取所有内容?所以用这个文字:
您好,我叫Martijn。我住在荷兰。
我得到2个结果:两个句子。但是当我离开+号时,我会得到2个两个字符:he
,ll
,o<space>
,my
等等。为什么会这样?
答案 0 :(得分:2)
因为dot outside a character class(即不在[]之间)意味着(几乎)任何角色。
因此,.[^\\.]
表示匹配(几乎)任何字符,后跟不是点或反斜杠(点不需要是在字符类中转义为仅表示一个点,但反斜杠确实如此,
在您的示例中,这是h(任何字符)e(不是点或反斜杠)等等。
使用+(一个或多个不是点或反斜杠),您将匹配所有不是点的字符,直到点。
答案 1 :(得分:2)
您的正则表达式.[^\\.]+
表示:
[^\\.]
表示不斜杠或非点,这意味着点或斜杠不匹配。它将继续匹配字符,直到它找到一个点或斜线,因为最后的“+”。因此,它被称为贪婪量词。当你输入时(不包括引号):“你好我的名字是Martijn。我住在荷兰。” 比赛是:
请注意,第一场比赛中不包含点,因为它在Martijn中的n处停止,第二场比赛以点开头。
删除+ :( .[^\\.]
)时
它只是意味着:
答案 2 :(得分:1)
正则表达式意味着: 任意一个字符,后跟超过0个不是反斜杠或句号的字符。