1

我正在编写一个正则表达式来提取短语,如#Question1#html#Question125#字符串,如

患者姓名#Question1#,患者患有#Question2#,患者性别为#Question3#,患者上个月饮酒#Question4#。他的出生日期是#Question5#

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

找到匹配的短语后,如何仅从字符串中提取数字?例如,#Question312#,我只想让 312 出来?

有什么建议吗?

4

2 回答 2

4

您正在寻找的正则表达式是

/#Question[0-9]+#/

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

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

使其成为一个群体。如何使用捕获的组取决于特定的正则表达式实现(例如 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)
于 2013-09-11T05:35:24.100 回答
2

我认为您正在寻找的是:

#Question[0-9]+#

  1. #问题
  2. 此类中的任何字符:[0-9],一次或多次重复
  3. #
于 2013-09-11T05:50:10.177 回答