此问题已在此处有答案:
What does (?<=x) mean in regex?(5个答案)
10天前关闭。
我在this的其他stackoverflow问题中看到了一个正则表达式,但我不明白每个部分的含义。
String[] split = s.split("(?<=[\\S])[\\S]*\\s*");
这样做的结果是一个句子的首字母缩写。
为了理解一个链式正则表达式,我应该从左到右读它,还是从右到左读它?如何识别(或限制)每个部分?
此问题已在此处有答案:
What does (?<=x) mean in regex?(5个答案)
10天前关闭。
我在this的其他stackoverflow问题中看到了一个正则表达式,但我不明白每个部分的含义。
String[] split = s.split("(?<=[\\S])[\\S]*\\s*");
这样做的结果是一个句子的首字母缩写。
为了理解一个链式正则表达式,我应该从左到右读它,还是从右到左读它?如何识别(或限制)每个部分?
2条答案
按热度按时间5q4ezhmt1#
(?<=[\\S])
声明匹配应该在\\S
之前,也就是说,除了空格之外的任何东西。[\\S]*
声明正则表达式应该匹配 * 零个或多个 * 非空格字符\\s*
匹配零个或多个空格。本质上,正则表达式找到一个非空格字符,并匹配它前面的所有非空格字符沿着它们后面的空格。
正则表达式匹配
Mohandas Karamchand G
中的ohandas<space><space>
和aramchand<space>
因此,在使用这些匹配分割字符串之后,最终得到
{"M", "K", "G"}
注意正则表达式匹配
Mohandas
后面的两个空格,因为\\s*
部分匹配 * 零个或更多 * 个空格jobtbby32#
要澄清可疑的正则表达式,您可以使用网站https://regexr.com/或https://regex101.com/
两者都用颜色标记零件并解释它们的作用。但是你必须用单反斜杠代替双反斜杠。