如何匹配单行字符串

时间:2017-06-25 08:43:01

标签: regex

寻找ECMAScript风格的模式以查找所有整数
积极的,如+1
负像-1
1之类的隐含正面 在一行内,如:

0 zero +1 2.2 1.1 -1 -1.1 one 1

NOT 多行,例如:

0
zero
+1
1.1
etc, ...

因此,对于此行,模式应匹配:(0 +1 -1 1

0 zero +1 2.2 1.1 -1 -1.1 one 1
^      ^^         ^^          ^  

基于:

  1. ECMAScript
  2. 重复没问题,所以12346789应该匹配
  3. 如果可能,则不捕获组()
  4. 尽可能高效
  5. 例:
    (?:^\d+|(?!\d)[+-]?\d+(?!\.)|\d+$)这样的愚蠢模式可以匹配0 +1 -1 1
    但它与字符串中的1不匹配:

    0 zero 1 two 2
    ^            ^  
    

    由于(?!\d)之前的+-标志

1 个答案:

答案 0 :(得分:1)

试试这个

(?:^| )[+-]?\d+?(?= |$)

它会做你想要的一切,除了拒绝多线。在ECMAScript正则表达式中不可能拒绝多行,但是在使用这个简单的正则表达式检查上面的正则表达式之前,您可以轻松地测试多行并拒绝它:

[\n\r]+?

注意:您不需要全局运行此模式;你可以在第一场比赛中休息(即第一次突破),所以不要使用g旗帜。