0

当我使用 regex 匹配一些使用 Python 的字符串时,我遇到了一个问题。

示例字符串:

ln[1] --这是一个字符串--

ln[2] 匹配下面的行。

ln[3] --这是一个字符串--

ln[4] 从这里开始匹配这一行。

ln[5] - 这是结束 -

我想在上面的字符串中提取 abc 。

代码:

pattern = re.compile('%s(.*?)%s' % ('--This is a string--', '-This is the end-'))
re.findall(pattern, string)

我怎样才能只得到第 4 行,而不是得到第 2 行到第 4 行?

非常感谢。

4

3 回答 3

2

可能,通过这个:

pattern = re.compile('.*(a.*?c)')
re.findall(pattern, string)  # yields ["abc"]
于 2013-07-10T10:07:40.277 回答
2
>>> re.findall('a[^a]*c', 'aaaaaaaaabc')
['abc']
>>> re.findall('a[^a]*c', 'aaaaaaaaa c')
['a c']
于 2013-07-10T10:09:58.590 回答
1

如果要替换所有重复字符的实例,可以使用 id 或命名组。

例子:

带身份证:

>>> re.sub('(.)(\\1)+', '\\1', 'abcAAAAabcBBBBabcCCCCabc')
'abcAabcBabcCabc'

名称:

>>> re.sub('(?P<n>.)(?P=n)+', '\\1', 'abcAAAAabcBBBBabcCCCCabc')
'abcAabcBabcCabc'
于 2013-07-10T10:20:00.767 回答