如何在Python中提取特定模式

2024-04-25 05:05:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手
我想在python3.5中提取特定的模式
图案:数字字符数字
字符可以是*+-/x

我该怎么做?你知道吗

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

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


Tags: 字符串示例模式数字字符图案xx新手
2条回答

re.match()函数将搜索限制在字符串的开头和结尾,以防止误报。你知道吗

  • 数字可以与\d匹配。你知道吗
  • 运算符可以与[x/+\-]匹配,后者正好匹配x/+-(因为它是一个特殊的regex字符而转义)。你知道吗
  • 最后一个数字可以与\d匹配。你知道吗
  • 将圆括号放在每个零件周围,可以将零件作为单独的子组进行提取。你知道吗

例如:

>>> re.match(r'(\d)([x/+\-])(\d)', '3/4').groups()
('3', '/', '4')

你可以用

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

或匹配整个字符串:

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

在Python3.x中,如果使用^{}demo)中的模式,则可以放弃^(字符串锚定的开始)和$(字符串锚定的结束):

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!

相关问题 更多 >