regex 什么是正则表达式(?< =[\\S])[\\S]*\\s* do?[副本]

3wabscal  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(106)

此问题已在此处有答案

What does (?<=x) mean in regex?(5个答案)
10天前关闭。
我在this的其他stackoverflow问题中看到了一个正则表达式,但我不明白每个部分的含义。

String[] split = s.split("(?<=[\\S])[\\S]*\\s*");

这样做的结果是一个句子的首字母缩写。
为了理解一个链式正则表达式,我应该从左到右读它,还是从右到左读它?如何识别(或限制)每个部分?

5q4ezhmt

5q4ezhmt1#

(?<=[\\S])声明匹配应该在\\S之前,也就是说,除了空格之外的任何东西。
[\\S]*声明正则表达式应该匹配 * 零个或多个 * 非空格字符
\\s*匹配零个或多个空格。
本质上,正则表达式找到一个非空格字符,并匹配它前面的所有非空格字符沿着它们后面的空格。
正则表达式匹配Mohandas Karamchand G中的ohandas<space><space>aramchand<space>
因此,在使用这些匹配分割字符串之后,最终得到{"M", "K", "G"}

注意正则表达式匹配Mohandas后面的两个空格,因为\\s*部分匹配 * 零个或更多 * 个空格

jobtbby3

jobtbby32#

要澄清可疑的正则表达式,您可以使用网站https://regexr.com/https://regex101.com/
两者都用颜色标记零件并解释它们的作用。但是你必须用单反斜杠代替双反斜杠。

相关问题