Python 正则表达式,否定字符串之间的一组字符
Python regex, negate a set of characters in between a string
我有几组字符串,数字后跟单词和混乱的数字和单词等。
例如,
"Street 50 No 40", "5, saint bakers holy street", "32 Syndicate street"
我正在尝试将街道名称与公寓号码分开。
这是我当前的代码:
import re
pattern_street = re.compile(r'[A-Za-z]+\s?\w+\s?[A-Za-z]+\s?[A-Za-z]+',re.X)
pattern_apartmentnumber = re.compile(r'(^\d+\s? | [A-Za-z]+[\s?]+[0-9]+$)',re.X)
for i in ["Street 50 No 40", "5, saint bakers holy street", "32 Syndicate street"]:
match_street = pattern_street.search(i)
match_apartmentnumber = pattern_apartmentnumber.search(i)
fin_street = match_street[0]
fin_apartmentnumber = match_apartmentnumber[0]
print("street--",fin_street)
print("apartmentnumber--",fin_apartmentnumber)
打印:
street-- Street 50 No
apartmentnumber-- No 40
street-- saint bakers holy street
apartmentnumber-- 5
street-- Syndicate street
apartmentnumber-- 32
我想删除第一个街道名称中的“否”。 即如果有任何街道以 No
结尾的数字,则需要将其作为公寓号,
而不是街道。
我该如何为上面的示例字符串执行此操作?
首先尝试最后有一个No 123
的情况,使用正向前看。
如果没有找到,试试没有这个的街道。
pattern_street = re.compile(r'[A-Za-z]+[\s\w]+(?=\s[Nn]o\s\d+$)|[A-Za-z]+[\s\w]+',re.X)
您可以通过以下正则表达式模式查找街道名称,以消除语句中的 No [0-9]。
pattern_street = re.compile(r'[A-Za-z]+((?!No).)+',re.X)
我有几组字符串,数字后跟单词和混乱的数字和单词等。 例如,
"Street 50 No 40", "5, saint bakers holy street", "32 Syndicate street"
我正在尝试将街道名称与公寓号码分开。
这是我当前的代码:
import re
pattern_street = re.compile(r'[A-Za-z]+\s?\w+\s?[A-Za-z]+\s?[A-Za-z]+',re.X)
pattern_apartmentnumber = re.compile(r'(^\d+\s? | [A-Za-z]+[\s?]+[0-9]+$)',re.X)
for i in ["Street 50 No 40", "5, saint bakers holy street", "32 Syndicate street"]:
match_street = pattern_street.search(i)
match_apartmentnumber = pattern_apartmentnumber.search(i)
fin_street = match_street[0]
fin_apartmentnumber = match_apartmentnumber[0]
print("street--",fin_street)
print("apartmentnumber--",fin_apartmentnumber)
打印:
street-- Street 50 No
apartmentnumber-- No 40
street-- saint bakers holy street
apartmentnumber-- 5
street-- Syndicate street
apartmentnumber-- 32
我想删除第一个街道名称中的“否”。 即如果有任何街道以 No
结尾的数字,则需要将其作为公寓号,
而不是街道。
我该如何为上面的示例字符串执行此操作?
首先尝试最后有一个No 123
的情况,使用正向前看。
如果没有找到,试试没有这个的街道。
pattern_street = re.compile(r'[A-Za-z]+[\s\w]+(?=\s[Nn]o\s\d+$)|[A-Za-z]+[\s\w]+',re.X)
您可以通过以下正则表达式模式查找街道名称,以消除语句中的 No [0-9]。
pattern_street = re.compile(r'[A-Za-z]+((?!No).)+',re.X)