如何提取字符串末尾的非数字字符和数字字符?
How can I extract non digit characters and digit characters in the end of a string?
我有一个具有以下结构的字符串:
位数-字-位数。
例如:
2029 AG.IZTAPALAPA 2
我想提取中间的单词和字符串末尾的数字。
我想提取AG.IZTAPALAPA 和 2在同一个捕获组中提取像:
AG.IZTAPALAPA 2
我设法将它们捕获为单独的捕获组,但不是单个捕获组:
town_state['municipality'] = town_state['Town'].str.extract(r'(\D+)', expand=False)
town_state['number'] = town_state['Town'].str.extract(r'(\d+)$', expand=False)
感谢您的帮助!
您可以使用以下简单的正则表达式:
[0-9]+\s([A-Z]+.[A-Z]+(?: [0-9]+)*)
注:
(?: [0-9]+)* 将使其成为最后一个可选数字。
你可以为示例字符串使用单个捕获组来匹配由大写字符组成的单个“单词”A-Z,中间有一个可选的点,不能在开头或结尾减少一位或多位数字。
\b\d+ ([A-Z]+(?:\.[A-Z]+)* \d+)\b
说明
\b
一个单词边界
\d+
(
捕获 组 1
[A-Z]+
匹配出现 1 次以上的大写字符 A-Z
(?:\.[A-Z]+)* \d+
重复 0+ 次匹配一个点和一个字符 A-Z 然后匹配 1+ 个数字
)
关闭组 1
\b
一个单词边界
或者您可以使模式更宽一些,以匹配点或单词字符
\b\d+ ([\w.]+(?: [\w.]+)* \d+)\b
我有一个具有以下结构的字符串:
位数-字-位数。
例如:
2029 AG.IZTAPALAPA 2
我想提取中间的单词和字符串末尾的数字。
我想提取AG.IZTAPALAPA 和 2在同一个捕获组中提取像:
AG.IZTAPALAPA 2
我设法将它们捕获为单独的捕获组,但不是单个捕获组:
town_state['municipality'] = town_state['Town'].str.extract(r'(\D+)', expand=False)
town_state['number'] = town_state['Town'].str.extract(r'(\d+)$', expand=False)
感谢您的帮助!
您可以使用以下简单的正则表达式:
[0-9]+\s([A-Z]+.[A-Z]+(?: [0-9]+)*)
注:
(?: [0-9]+)* 将使其成为最后一个可选数字。
你可以为示例字符串使用单个捕获组来匹配由大写字符组成的单个“单词”A-Z,中间有一个可选的点,不能在开头或结尾减少一位或多位数字。
\b\d+ ([A-Z]+(?:\.[A-Z]+)* \d+)\b
说明
\b
一个单词边界\d+
(
捕获 组 1[A-Z]+
匹配出现 1 次以上的大写字符 A-Z(?:\.[A-Z]+)* \d+
重复 0+ 次匹配一个点和一个字符 A-Z 然后匹配 1+ 个数字
)
关闭组 1\b
一个单词边界
或者您可以使模式更宽一些,以匹配点或单词字符
\b\d+ ([\w.]+(?: [\w.]+)* \d+)\b