正则表达式 - 模式匹配&更换

时间:2011-07-05 08:46:32

标签: regex

文字是:“R1和R24或R456'

我想写一个可以找到R的模式和跟随它的数字(只有数字)。 所以比赛将是:R1,R24,R456。

如何编写适当的正则表达式?

4 个答案:

答案 0 :(得分:2)

这样的东西
\bR\d+

here on Regexr

\b是单词边界的锚点,这意味着R

之前不能有单词字符(字母,数字和_)

\d是一个数字

+一个或多个

如果你想替换你可以这样做的数字(如果你的语言支持lookbehinds)

(?<=\bR)\d+

请参阅here on Regexr

要获得正确的语法,您需要告诉我们您的语言。

答案 1 :(得分:1)

/ R \ d + /

  • /.../表示正则表达式(不要用所有语言键入)
  • R表示文字字符R
  • \ d代表数字
  • \ d +代表“d代表

  • 中的”一个或多个“
  • 正如其他人所指出的那样,如果你想避免匹配像“thumb2”这样的单词的结尾,你可以使用\ b表示“单词的开头”

  • 您可以通过执行s / R(\ d +)/ rev_ \ 1 / g之类的操作来替换,以便通过文本将R132转换为rev_132
  • 如何应用正则表达式的确切语法因语言而异:在Perl中,您键入的内容与上面的/.../语法非常相似。在其他语言中,您可以使用传递给函数的字符串“R \ d +”。在某些情况下,你需要在里面添加斜线一个字符串。

  • 您可以在线测试,例如:http://www.fileformat.info/tool/regex.htm

  • 有许多在线介绍,例如:http://www.regular-expressions.info/reference.html

答案 2 :(得分:1)

正则表达式为\bR\d+。要同时捕获您可以使用的号码\bR(\d+)

答案 3 :(得分:0)

您的问题的主题是“替换”,但我无法找到有关您的问题可能替换的任何要点。

正则表达式模式/R[0-9]+/应该可以在“R1 AND R24 OR R456”中找到“R1”,“R24”和“R456”。

要提取相应“R”后面的数字,您可以在正则表达式模式中添加一个组:/R([0-9]+)/。然后,您可以将测试字符串与正则表达式模式“匹配”,并为每个匹配提取组1:

Target String: R1 AND R24 OR R456
Regex Pattern: R([0-9]+)
"find next"; group(0): R1; group(1): 1
"find next"; group(0): R24; group(1): 24
"find next"; group(0): R456; group(1): 456
"find next"; null

您使用的是哪种编程语言?然后我们可以提供一个更加坚固的例子。