【问题标题】:Regular expression to find number in parentheses, but only at beginning of string正则表达式在括号中查找数字,但仅在字符串的开头
【发布时间】:2015-05-22 20:56:09
【问题描述】:

免责声明:我是编写正则表达式的新手,所以唯一的问题可能是我缺乏经验。

我正在尝试编写一个正则表达式来查找括号内的数字,并且我希望数字和括号都包含在选择中。但是,我只希望它在字符串的开头匹配。所以在下面的文本中,我希望它得到 (10),而不是 (2) 或(图 50)。

(10) Joystick Switch - Contains control switches (Figure 50)
Two (2) heavy lifting straps

到目前为止,我有(\(\d+\)),它得到 (10) 和 (2)。我知道 ^ 应该匹配字符串(或行)的开头,但我无法让它工作。我在这里和其他网站上查看了很多类似的问题,但只找到了部分解决方案(在括号内查找内容,仅查找字符串开头的数字等)并且还没有找到能够将它们放在一起工作。

我正在使用它在 CAT 工具中创建一个过滤器(对于那些正在翻译的人),这意味着不涉及其他编码语言;本质上,我一直在使用RegExr 来测试我编写的所有其他表达式,而且效果很好。

【问题讨论】:

  • ^(\(\d+\)) 应该可以正常工作。如果不发布您使用的表达式,更重要的是,如何您应用该表达式(哪种语言?哪种特定方法?等),我们无法真正说出为什么它不会工作。
  • 也许你必须逃避^

标签: regex


【解决方案1】:

正则表达式应该是

^\(\d+\)
  • ^ 将正则表达式锚定在字符串的开头。

  • \( 匹配 (。应该转义,因为它在正则表达式中有特殊含义

  • \d+ 匹配一位或多位数字

  • \) 匹配 )

  • 捕获像(\(\d+\)) 这样的括号不是必需的,因为没有与模式匹配的其他字符。只有当您需要从匹配的模式中提取部分时才需要它

    例如,如果您想匹配 (50) 但要从模式中提取数字 50,那么您可以使用

    \((\d+)\)
    

    这里的\d+部分属于捕获的组1,即捕获的组1将是50,其中匹配的整个字符串是(50)

Regex Demo

【讨论】:

    【解决方案2】:

    像这样:

    ^\(\d+\)
    

    ^

    () 都是正则表达式元字符,因此需要用\ 进行转义

    所以\(\) 匹配文字括号。

    () 捕获。

    \d+ 匹配 1 个或多个数字

    Demo

    【讨论】:

      猜你喜欢
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多