正则表达式字符串后跟数字

时间:2013-09-11 05:32:26

标签: regex

我正在写一个正则表达式来从html字符串中提取像#Question1##Question125#这样的短语,如

  

Patitent name#Question1#,患者患有#Question2#,患者的性别是#Question3#,患者有#Question4#在上个月饮酒。他的DOB是#Question5#

表达式的前半部分只是简单#Question,但我还需要匹配一系列未指定长度的数字,整个字符串以#结尾。

一旦找到匹配的短语,我如何仅从字符串中提取数字?例如,#Question312#,我只想得到312?

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

这很简单,你正在寻找的正则表达式是

/#Question[0-9]+#/

如果您需要提取数字,可以将[0-9]+部分括在括号

/#Question([0-9]+)#/

使它成为一个团体。如何使用捕获的组取决于特定的regexp实现(例如python,perl,javascript ...)。例如,在python中,您可以使用

列表中的相应答案替换所有这些问题
answers = ["Andrea", "Griffini"]
text = "My first name is #Question1# and my last name is #Question2#"
print re.sub("#Question([0-9]+)#",
             lambda x:answers[int(x.group(1)) - 1],
             text)

答案 1 :(得分:2)

我认为你在寻找的是:

#Question[0-9]+#

  1. #Question
  2. 此课程中的任何角色:[0-9],一次或多次重复