0

我正在使用useDelimiterJava 中的方法来忽略除-. 这是因为-用于绑定诸如"three-legged". 问题是--在文字前后出现多次。所以我想忽略所有出现的--,但不是-

这是我的正则表达式模式到目前为止的样子:useDelimiter("[[^a-zA-Z&&[^'-]&&\\s]+");

编辑:解决了!这就是我所做的: useDelimiter("[[^a-zA-Z&&[^'&&[^-{1}]]]\\s]+"); - 对此正则表达式的任何改进将不胜感激。

双重编辑 - 我没有解决它。但是杰里确实看过他对正确答案的回应

4

2 回答 2

1

我认为你的正则表达式有点奇怪。本身不需要交集(在修复缺失后]):

[[^a-zA-Z]&&[^'-]&&\\s]

和 的交集[^a-zA-Z]与this 的交集[^'-]相同,只给出。[^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

ideone演示

编辑:您当前的正则表达式的修改可能是:

(?:[[^a-zA-Z&&[^'&&[^-]]]\\s]|--)+
于 2013-10-12T17:41:31.437 回答
0

我不是 Java 专家,但你的正则表达式没有问题。

 [  <-- Unbalanced  '['
 [^a-zA-Z&&[^'-]&&\s]+ 
于 2013-10-12T17:56:00.280 回答