[英]Java Regex: Split based on non-word characters except for apostrophe
我试图基于空格和非单词字符进行拆分和包含,除了撇号。
我已经能够将它拆分并包含空格和非单词字符,但我似乎无法弄清楚如何从非单词字符中排除撇号。
这是我目前的Regex ......
str.split("\\s|(?=\\W)");
...在此代码示例上运行时:
program p;
begin
write('x');
end.
...产生这个结果:
program
p
;
begin
write
(
'x <!-- This is the problem.
'
)
;
end
.
这几乎是正确的,但我的目标是跳过撇号,这是结果:
program
p
;
begin
write
(
'x' <!-- This is the wanted result.
)
;
end
.
UPDATE
正如我所建议的那样:
str.split("\\s|(?=\\W)(?<=\\W)");
这几乎可以工作,但不能正确拆分所有特殊字符:
program
p;
begin
write(
'x'
)
;
end.
你有没有尝试过...
[^\w']
这将匹配任何既不是单词字符也不是撇号的字符。 可能很简单,根据您的输入工作。
如果你使用[^\\w']
作为你的正则表达式来运行替换操作而使用\\n\\1\\n
作为替换字符串,它应该让你接近你想要的位置。
作为替代方案,可以扫描\\ b [\\ w'] + \\ b的字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.