java正则表达式X的示例,X?&x2B;还有X?
有人能用java示例来说明java正则表达式X的示例,X?&x2B;还有X?,java,regex,Java,Regex,有人能用java示例来说明X?、X?+和X???之间的区别吗。 其中X?,X?+和X???是java.util.regex.Pattern 对于所有三种模式,他们给出了相同的解释(X,一次或根本不解释) 参考文献 我在互联网上找不到好的例子 注意:今天早上我在这里问了部分问题:,因为我又更新了帖子看看这些例子 System.out.println("abb".matches("abb?b")); // Greedy -> true System.out.println("abb"
X?
、X?+
和X???
之间的区别吗。
其中X?
,X?+
和X???
是java.util.regex.Pattern
对于所有三种模式,他们给出了相同的解释(X
,一次或根本不解释)
参考文献
我在互联网上找不到好的例子
注意:今天早上我在这里问了部分问题:,因为我又更新了帖子看看这些例子
System.out.println("abb".matches("abb?b")); // Greedy -> true
System.out.println("abb".matches("abb??b")); // Reluctant -> true
System.out.println("abb".matches("abb?+b")); // Possessive -> false
前两个匹配,因为即使?
贪婪或不情愿?
第二个b
可以返回并用于匹配未找到此部分的regex变量
有趣的事情发生在所有格的
?+
中,所以当它匹配某个东西时,就意味着这部分属于正则表达式的所有格部分,不能被正则表达式的其余部分匹配。因此,因为第二个b
与b?+
匹配,所以它不能与最后一个b
regex匹配,这就是为什么匹配
返回false
看看这些示例
System.out.println("abb".matches("abb?b")); // Greedy -> true
System.out.println("abb".matches("abb??b")); // Reluctant -> true
System.out.println("abb".matches("abb?+b")); // Possessive -> false
前两个匹配,因为即使?
贪婪或不情愿?
第二个b
可以返回并用于匹配未找到此部分的regex变量
有趣的事情发生在所有格的
?+
中,所以当它匹配某个东西时,就意味着这部分属于正则表达式的所有格部分,不能被正则表达式的其余部分匹配。因此,因为第二个b
与b?+
匹配,它不能与最后一个b
regex匹配,这就是为什么matches
返回false您需要更复杂的模式才能看到差异
- 贪婪的量词首先匹配尽可能多的内容(但要回溯)
- 不情愿或“不贪婪”的量词首先匹配的尽可能少
- 所有格量词和贪婪量词一样,但它不会后退
使用捕获组来查看发生了什么
在字符串b
和bb
上尝试(b+)
、(b+)(b+)
等模式
打印A)如果匹配,和B)如果匹配,组是什么
以下是我所期望的,但没有进行测试:
贪婪:在第一种情况下(通过回溯!),它应该匹配空的b
,b
,在第二种情况下匹配b
不情愿:它应该在上匹配,第一种情况下为'b',第二种情况下为,bb
。第一组实际上永远不会匹配任何东西,因此这种模式没有意义
所有格:它不应该匹配第一个字符串(第二组不再剩下b
,并且不会回溯)和第二个字符串中的b
,b
(不需要回溯)。您需要更复杂的模式才能看到差异
- 贪婪的量词首先匹配尽可能多的内容(但要回溯)
- 不情愿或“不贪婪”的量词首先匹配的尽可能少
- 所有格量词和贪婪量词一样,但它不会后退
使用捕获组来查看发生了什么
在字符串b
和bb
上尝试(b+)
、(b+)(b+)
等模式
打印A)如果匹配,和B)如果匹配,组是什么
以下是我所期望的,但没有进行测试:
贪婪:在第一种情况下(通过回溯!),它应该匹配空的b
,b
,在第二种情况下匹配b
不情愿:它应该在上匹配,第一种情况下为'b',第二种情况下为,bb
。第一组实际上永远不会匹配任何东西,因此这种模式没有意义
所有格:它不应该匹配第一个字符串(第二组不再剩下b
,并且它不会回溯)和第二个字符串中的b
,b
(不需要回溯)。我喜欢这样想-
X?? Negative bias, 0 or 1 time - preference to 0 if possible
X? Neutral bias, 0 or 1 time
X?+ Positive bias, 0 or 1 time - preference to 1 if possible,
and if 1 won't give it up (backtrack)
我喜欢这样想-
X?? Negative bias, 0 or 1 time - preference to 0 if possible
X? Neutral bias, 0 or 1 time
X?+ Positive bias, 0 or 1 time - preference to 1 if possible,
and if 1 won't give it up (backtrack)
您可以使用一个更相关的示例,如使用aababba
,并使用模式ab?
,ab?++
和ab???
想要了解java api docDerp中给出的模式的基础知识。我做了一个错误的假设。忽略我之前说过的话(现在是nuked)。强烈建议你自己去试试正则表达式。有很多免费的在线网站,你可以在那里测试正则表达式,看看a)它们做什么,B)调试它们。我个人用的是反正。文档说它们是位置量词,谷歌搜索这一点给了我这个页面,这似乎是一个很好的资源:基本上,它们是贪婪的量词,只是re引擎不会回溯到它们。你可以使用一个更相关的例子,比如使用aababba
,然后使用模式ab?
,ab?+
和ab???
想了解java api docDerp中给出的模式的基础知识。我做了一个错误的假设。忽略我之前说过的话(现在是nuked)。强烈建议你自己去试试正则表达式。有很多免费的在线网站,你可以在那里测试正则表达式,看看a)它们做什么,B)调试它们。我个人用的是反正。文档说它们是有位置的量词,谷歌搜索这一点给了我这个页面,这似乎是一个很好的资源:基本上,它们是贪婪的量词,除了re引擎不会回溯到它们上面。+1是简单的答案:)无论如何在X中代码>1是首选,但出于更大的原因,它也将接受0并放弃匹配的部分。我喜欢将中性作为从左到右处理的基础。在这个月