正则表达式,用于在括号中查找数字,但仅限于字符串的开头

时间:2015-05-22 20:56:10

标签: regex

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

我正在尝试编写一个正则表达式,它将在括号内找到数字,我希望数字和括号都包含在选择中。但是,如果它位于字符串的开头,我只希望它匹配。因此,在下面的文本中,我希望它得到(10),但不是(2)或(图50)。

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

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

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

2 个答案:

答案 0 :(得分:5)

正则表达式应该是

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

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

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

  • \)匹配)

  • 不需要捕获(\(\d+\))这样的括号,因为该模式中没有其他字符匹配。仅当您需要从匹配模式中提取零件时才需要它

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

    \((\d+)\)
    

    此处\d+部分位于捕获的组1中,即捕获的组1将为50,其中匹配的整个字符串为(50)

Regex Demo

答案 1 :(得分:1)

像这样:

^\(\d+\)

^

()中的每一个都是正则表达式元字符,因此需要使用\转义

因此\(\)匹配字面括号。

()捕获。

\d+匹配1位或更多位数

Demo