【发布时间】:2016-09-19 17:15:28
【问题描述】:
我正在尝试根据空格和非单词字符进行拆分和包含,撇号除外。
我已经能够根据空格和非单词字符对其进行拆分和包含,但我似乎无法弄清楚如何从非单词字符中排除撇号。
这是我当前的正则表达式...
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.
【问题讨论】:
-
这对你有用吗:
([^\\w']+) -
Java support character class subtraction 吗?如果确实如此,可能对您的情况有所帮助。
-
@Toto Hmm 使撇号工作,但它不包括其他特殊字符:program mini begin write 'x' end
-
我似乎不知道如何从非单词字符中排除撇号。试试
[\w&&[^']]