3

如何123使用 Python 3 regex 模块获取以下字符串的一部分?

....XX (a lot of HTML characters)123

这里的...Part 表示一个由 HTML 字符、单词和数字组成的长字符串。

数字123是 的一个特征XX。因此,如果有人可以建议一种通用方法,其中XX可以是任何字母,例如AAor AB,那将更有帮助。

旁注:
我想到使用 Perl 的\G运算符,首先XX在字符串中进行识别,然后识别出现在XX. 但似乎\G运算符在 Python 3 中不起作用。

我的代码:

import re
source='abcd XX blah blah 123 more blah blah'
grade=str(input('Which grade?'))
#here the user inputs XX

match=re.search(grade,source)
match=re.search('\G\D+',source)
#Trying to use the \G operator to get the location of last match.Doesn't work.

match=re.search('\G\d+',source)
#Trying to get the next number after XX.
print(match.group())
4

1 回答 1

1

描述

此正则表达式将匹配XX可以替换为用户输入的字符串值。正则表达式还要求XX字符串被空格包围或在示例文本的开头,以防止在XX诸如EXXON.

(?<=\s|^)\b(xx)\b\s.*?\s\b(\d+)\b(?=\s|$)

在此处输入图像描述

代码示例:

我不太了解python,无法提供适当的python示例,所以我包含一个PHP示例来简单地展示正则表达式如何工作以及捕获的组

<?php
$sourcestring="EXXON abcd XX blah blah 123 more blah blah";
preg_match('/(?<=\s|^)\b(xx)\b\s.*?\s\b(\d+)\b(?=\s|$)/im',$sourcestring,$matches);
echo "<pre>".print_r($matches,true);
?>
 
$matches Array:
(
    [0] => XX blah blah 123
    [1] => XX
    [2] => 123
)

如果您需要实际的字符串位置,那么在 PHP 中看起来像

$position = strpos($sourcestring, $matches[0]) 
于 2013-06-08T15:35:38.440 回答