正则表达式在java中查找带连字符的文本

时间:2014-08-11 03:45:41

标签: java regex

我只需要找到这样的带连字符的文字,我为此制作了一些代码,但它有一些问题。

例如:-(PRX) - 是一种非甾体表面与体积比 - 由于水溶性差而表征。(关键) - 词"只有非甾体才有效。"

  1. 非甾体--->有效(只有这种类型有效,所有应该被忽略
  2. 表面与体积比,由于对所述--->无效
  3. (键)-words:---->无效
  4. 只允许使用一个连字符。如果一个单词中有2个连字符,那么它应该被忽略。

    我的正则表达式是 - :

    (((\b|,|'|.!|)(([a-zA-Z])+){0}-{1}(([a-zA-Z]+))(\b|,|'|.!)))
    

    如图所示:红色圆圈表示必须忽略。enter image description here

1 个答案:

答案 0 :(得分:4)

如果你想获得只有一个连字符的单词,你可以使用这个正则表达式:

(?<!-)\b(\w+\-\w+)\b(?!-)

<强> Working demo

enter image description here

但是如果你想获得连字符(带有多个连字符),你可以使用:

((?:\w+\-)+\w+)

<强> Working demo

enter image description here