我正在尝试基于空格和非单词字符进行拆分和包含,除了撇号。
我已经能够将它拆分并包含空格和非单词字符,但我似乎无法弄清楚如何从非单词字符中排除撇号。
这是我现在的正则表达式......
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
.
更新
正如我所建议的那样:
str.split("\\s|(?=\\W)(?<=\\W)");
哪个几乎有效,但没有正确分割所有特殊字符:
program
p;
begin
write(
'x'
)
;
end.
答案 0 :(得分:5)
你试过......
[^\w']
这将匹配任何既不是单词字符也不是撇号的字符。可能很简单,根据您的输入工作。
如果您使用[^\w']
作为正则表达式并使用\n\1\n
作为替换字符串来运行替换操作,那么它应该会让您接近您想要的位置。
答案 1 :(得分:1)
答案 2 :(得分:0)
答案 3 :(得分:0)
也可以扫描字符串以查找 \ b [\ w'] + \ b