我正在写一个正则表达式来从html字符串中提取像#Question1#
或#Question125#
这样的短语,如
Patitent name#Question1#,患者患有#Question2#,患者的性别是#Question3#,患者有#Question4#在上个月饮酒。他的DOB是#Question5#
表达式的前半部分只是简单#Question
,但我还需要匹配一系列未指定长度的数字,整个字符串以#结尾。
一旦找到匹配的短语,我如何仅从字符串中提取数字?例如,#Question312#,我只想得到312?
有什么建议吗?
答案 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]+#