正则表达式匹配“不是两个字符的任何东西”

时间:2012-05-08 14:54:19

标签: regex pattern-matching

这就是我想要做的事情:

文本: -one oneitis -two + three + four + five -six-seven-eight -nine then 11 + 12十三

我想要匹配:

  1. -one oneitis
  2. - 两个
  3. + 3
  4. + 4
  5. + 5
  6. -SiX七个八
  7. -nine then eleven
  8. + twleve十三
  9. 基本上,忽略单词中的匹配' - ',但如果它们存在则匹配'+',并且' - '

    这是我正在使用的正则表达式:/([ - +] [^ +] +)/

    我想基本上做[^(+)&( - )] +

    或者,匹配任何不是'+'和' - '< - 即(空格和减号)

    有没有办法做到这一点?

    提前致谢! (链接一些工具http://rubular.com/

2 个答案:

答案 0 :(得分:3)

解。

    ([-+](?:[^ ][-]|[ ][^-+]|[^ +-])+)

http://rubular.com/r/fTSm0pjvEX

答案 1 :(得分:1)

一种选择是按\+|\B-分割:http://rubular.com/r/tC2zTWZI4v

每个+-在空格(或任何非字母数字字符)之后的拆分。

这意味着它在某些情况下不会分裂,例如+a b-c不会被拆分。

如果您确实想要匹配您的单词,并希望在这种情况下进行拆分,您可以尝试:

[+-]([^\s+]*[^+-]*)

http://rubular.com/r/TqQEAoJ2Yv