Regex 如何提取字符串末尾的非数字字符和数字字符?
我有一个具有以下结构的字符串: 数字字-数字 例如: 2029年股份公司IZTAPALAPA 2 我想在中间提取单词,在字符串结尾提取数字。< /P> 我想在同一个捕获组中提取AG.IZTAPALAPA和2以提取如下内容: IZTAPALAPA公司2 我设法将它们作为单个捕获组捕获,但不是作为单个捕获组捕获:Regex 如何提取字符串末尾的非数字字符和数字字符?,regex,regex-group,Regex,Regex Group,我有一个具有以下结构的字符串: 数字字-数字 例如: 2029年股份公司IZTAPALAPA 2 我想在中间提取单词,在字符串结尾提取数字。< /P> 我想在同一个捕获组中提取AG.IZTAPALAPA和2以提取如下内容: IZTAPALAPA公司2 我设法将它们作为单个捕获组捕获,但不是作为单个捕获组捕获: town_state['municipality'] = town_state['Town'].str.extract(r'(\D+)', expand=False) town_stat
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] +)*<强>将成为最后的数字可选。/P>> P>Yo可以使用示例字符串的单个捕获组来匹配由大写字符AZ组成的单个“单词”,中间有一个可选的点,不能在起始或结束后面跟着1个或更多个数字。
\b\d+ ([A-Z]+(?:\.[A-Z]+)* \d+)\b
解释
单词边界\b
\d+
Capturegroup 1(
匹配1+个大写字符A-Z[A-Z]+
重复0+次匹配点和字符A-Z,然后匹配1+个数字(?:\.[A-Z]+)*\d+
关闭第1组)
单词边界\b
\b\d+ ([\w.]+(?: [\w.]+)* \d+)\b
虽然我不知道它是哪种语言,但它不是通过
'(\D+\D+$”
完成了预期的工作吗?但是,这两种解决方案都可以工作,我有以下字符串:1。2029年IZTAPALAPA公司。2029 AG.IZTAPALAPA您的答案成功地提取了字符串1,但数字不在末尾。它将字符串“提取”为Nan。有没有办法让最后的数字成为可选的?@AlejandroL你可以让空格和数字部分成为可选的\b\d+([a-Z]+(?:\.[a-Z]+)*(?:\d+)\b
谢谢,这对在一行代码中将它们作为单独的组捕获很有用。然而,我想把他们作为一个整体来抓。