免责声明:我是编写正则表达式的新手,所以唯一的问题可能是我缺乏经验。
我正在尝试编写一个正则表达式,它将在括号内找到数字,我希望数字和括号都包含在选择中。但是,如果它位于字符串的开头,我只希望它匹配。因此,在下面的文本中,我希望它得到(10),但不是(2)或(图50)。
(10) Joystick Switch - Contains control switches (Figure 50)
Two (2) heavy lifting straps
到目前为止,我有(\(\d+\))
得到(10)但也有(2)。我知道^应该匹配字符串(或行)的开头,但我无法让它工作。我已经在这里和其他网站上看了很多类似的问题,但只找到了解决方案的一部分(在括号内查找内容,在字符串的开头找到数字等等)并且还没有能够把它们放在一起工作。
我正在使用它在CAT工具中创建一个过滤器(对于翻译中的那些人来说),这意味着没有涉及其他编码语言;基本上,我一直在使用RegExr来测试我写的所有其他表达式,这样做很好。
答案 0 :(得分:5)
正则表达式应该是
^\(\d+\)
^
将正则表达式锚定在字符串的开头。
\(
匹配(
。应该被转义,因为它在正则表达式中具有特殊含义
\d+
匹配一个或多个数字
\)
匹配)
不需要捕获(\(\d+\))
这样的括号,因为该模式中没有其他字符匹配。仅当您需要从匹配模式中提取零件时才需要它
例如,如果您想匹配(50)
,但要从模式中提取数字50
,那么您可以使用
\((\d+)\)
此处\d+
部分位于捕获的组1中,即捕获的组1将为50
,其中匹配的整个字符串为(50)
答案 1 :(得分:1)