在Python if语句中使用正则表达式
我试图找出如何将regex合并到pythonif语句中。我有一个pandas数据框,在其中我对行进行迭代,并希望在每一行具有特定的文本组合时执行一个操作。正则表达式应匹配以大写字母开头,后跟6个数字的任何7个字符串(即R142389)在Python if语句中使用正则表达式,python,regex,Python,Regex,我试图找出如何将regex合并到pythonif语句中。我有一个pandas数据框,在其中我对行进行迭代,并希望在每一行具有特定的文本组合时执行一个操作。正则表达式应匹配以大写字母开头,后跟6个数字的任何7个字符串(即R142389) 我这样做对吗?任何帮助都将不胜感激 是的,您可以这样做,只需使用match,它将只在与之比较的字符串的开头匹配。您必须使用search来搜索整个字符串 关于正则表达式的一些解释: ^断言字符串开头的位置 import re regex = re.compile(
我这样做对吗?任何帮助都将不胜感激 是的,您可以这样做,只需使用
match
,它将只在与之比较的字符串的开头匹配。您必须使用search
来搜索整个字符串
关于正则表达式的一些解释:
^
断言字符串开头的位置
import re
regex = re.compile('^[A-Z]\d{6}$')
possibles = ['R142389', 'hello', 'J123456']
for line in possibles:
if regex.match(line):
print(line)
[A-Z]
A-Z在A(索引65)和Z(索引90)之间的单个字符(区分大小写)
\d{6}
匹配一个数字(等于[0-9]
)
{6}
量词-精确匹配6次
$
在字符串末尾或字符串末尾的行终止符之前断言位置
import re
regex = re.compile('^[A-Z]\d{6}$')
possibles = ['R142389', 'hello', 'J123456']
for line in possibles:
if regex.match(line):
print(line)
输出:
R142389
J123456
是的,您可以这样做,只需使用
match
,它将只在与之比较的字符串的开头匹配。您必须使用search
来搜索整个字符串
关于正则表达式的一些解释:
^
断言字符串开头的位置
import re
regex = re.compile('^[A-Z]\d{6}$')
possibles = ['R142389', 'hello', 'J123456']
for line in possibles:
if regex.match(line):
print(line)
[A-Z]
A-Z在A(索引65)和Z(索引90)之间的单个字符(区分大小写)
\d{6}
匹配一个数字(等于[0-9]
)
{6}
量词-精确匹配6次
$
在字符串末尾或字符串末尾的行终止符之前断言位置
import re
regex = re.compile('^[A-Z]\d{6}$')
possibles = ['R142389', 'hello', 'J123456']
for line in possibles:
if regex.match(line):
print(line)
输出:
R142389
J123456
我会使用
re
模块
import re
re.search(pattern, string, flags=0)
其中,pattern
是要匹配的正则表达式,string
是要搜索的字符串,标志是可选的修饰符。当没有匹配项时,此函数返回None
以下是re
文档:
下面是一个实现示例:我将使用re
模块
import re
re.search(pattern, string, flags=0)
其中,pattern
是要匹配的正则表达式,string
是要搜索的字符串,标志是可选的修饰符。当没有匹配项时,此函数返回None
以下是re
文档:
下面是一个实现示例:小心str=['R142389','hello','J123456']
。您覆盖的内置名称可能导致以下情况。最好改用strs
这样的名称。无论如何,回答得不错+1如果您建议使用match
,您应该提到它只会匹配字符串开头的模式<代码>搜索
将在整个字符串中找到匹配项。@ChristianDean哎呀,fixed@skrrgwasme也许吧,但请注意,OP明确地说“正则表达式应该匹配任何以大写字母开头,后跟6个数字的7个字符的字符串”。这很有效!谢谢小心使用str=['R142389','hello','J123456']
。您覆盖的内置名称可能导致以下情况。最好改用strs
这样的名称。无论如何,回答得不错+1如果您建议使用match
,您应该提到它只会匹配字符串开头的模式<代码>搜索
将在整个字符串中找到匹配项。@ChristianDean哎呀,fixed@skrrgwasme也许吧,但请注意,OP明确地说“正则表达式应该匹配任何以大写字母开头,后跟6个数字的7个字符的字符串”。这很有效!谢谢