我在Java中使用useDelimiter
方法忽略除-
之外的所有非字母。这是因为-
用于绑定像"three-legged"
这样的单词。问题是--
在单词之前和之后的文本中多次出现。所以我想忽略所有--
,而不是-
到目前为止,这是我的正则表达式模式:useDelimiter("[[^a-zA-Z&&[^'-]&&\\s]+");
编辑:解决了!这就是我做的:
useDelimiter("[[^a-zA-Z&&[^'&&[^-{1}]]]\\s]+");
- 对此正则表达式的任何改进都将很高兴。
双重编辑 - 我没有解决它。但是JERRY看到他的回应是否得到了正确的回答
答案 0 :(得分:1)
我认为你的正则表达式有点奇怪。本身没有交叉点(在修复丢失的]
之后):
[[^a-zA-Z]&&[^'-]&&\\s]
[^a-zA-Z]
和[^'-]
的交集与[^a-zA-Z'-]
相同,与\\s
的交叉仅提供\\s
。
也许你的意思是:
useDelimiter("[^a-zA-Z'-[\\s]]+");
然后,如果我在你的正则表达式上构建,你可以使用替换组和非捕获组添加--
:
useDelimiter("(?:[^a-zA-Z'-[\\s]]|--)+");
示例字符串:
Hello! World! Seems that... -- Hey! That's my three-legged table!
将分裂为:
Hello
World
Seems
that
Hey
That's
my
three-legged
table
编辑:您当前正则表达式的修改可能是:
(?:[[^a-zA-Z&&[^'&&[^-]]]\\s]|--)+
答案 1 :(得分:0)
我不是Java专家,但你的正则表达式没有问题。
[ <-- Unbalanced '['
[^a-zA-Z&&[^'-]&&\s]+