如何在Python中提取特定模式

时间:2017-03-17 06:58:13

标签: python regex python-3.x pattern-matching

我是python的新手 我想在python 3.5中提取特定的模式 模式:数字字符数字
字符可以是 * + - / x X

我该怎么做?

我尝试使用模式[0-9 \ * / + - xX \ 0-9],但它返回字符串中的任何一个字符。

示例:2 * 3或2x3或2 + 3或2-3应匹配
但是asdXyz不应该

2 个答案:

答案 0 :(得分:2)

您可以使用

[0-9][*+/xX-][0-9]

或匹配整个字符串:

^[0-9][*+/xX-][0-9]$

在Python 3.x中,如果使用re.fullmatch中的模式,则可以丢弃^(字符串锚的开头)和$(字符串锚的结尾)({{ 3}}):

if re.fullmatch(r'[0-9][*+/xX-][0-9]', '5+5'):
    print('5+5 string found!')
if re.fullmatch(r'[0-9][*+/xX-][0-9]', '5+56'):
    print('5+56 string found!')
# => 5+5 string found!

答案 1 :(得分:1)

re.match()函数会将搜索范围限制为字符串的开头和结尾,以防止误报。

  • 数字可与\d匹配。
  • 运营商可以与[x/+\-]匹配,x只与/+-\d中的一个匹配(因为它是一个特殊的正则表达式字符)。
  • 最后一位数字可与>>> re.match(r'(\d)([x/+\-])(\d)', '3/4').groups() ('3', '/', '4') 匹配。
  • 在每个部分周围加上括号可以将部分提取为单独的子组。

例如:

echo "

        <input type ='button' value = 'Date'  onclick = \"getElementById('demo')=Date();\" /> 

        <p id='demo'> </p>

        ";
?>