在Python if语句中使用正则表达式

在Python if语句中使用正则表达式,python,regex,Python,Regex,我试图找出如何将regex合并到pythonif语句中。我有一个pandas数据框,在其中我对行进行迭代,并希望在每一行具有特定的文本组合时执行一个操作。正则表达式应匹配以大写字母开头,后跟6个数字的任何7个字符串(即R142389) 我这样做对吗?任何帮助都将不胜感激 是的,您可以这样做,只需使用match,它将只在与之比较的字符串的开头匹配。您必须使用search来搜索整个字符串 关于正则表达式的一些解释: ^断言字符串开头的位置 import re regex = re.compile(

我试图找出如何将regex合并到pythonif语句中。我有一个pandas数据框,在其中我对行进行迭代,并希望在每一行具有特定的文本组合时执行一个操作。正则表达式应匹配以大写字母开头,后跟6个数字的任何7个字符串(即R142389)


我这样做对吗?任何帮助都将不胜感激

是的,您可以这样做,只需使用
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个字符的字符串”。这很有效!谢谢