- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试从如下所示的字符串中提取内容:
A.content content
content
B.content C. content content
content D.content
这是我的 Python 正则表达式模式:
reg = re.compile(r'''
(?xi)
(\w\.\t*\s*)+ (?# e.g. A. or b.)
(.+) (?# the alphanumeric content with common symbols)
^(?:\1) (?# e.g. 'not A.' or 'not b.')
''')
m = reg.findall(s)
让我举个例子。假设我有以下字符串:
s = '''
a. $1000 abcde!?
b. (December 31, 1993.)
c. 8/1/2013
d. $690 * 10% = 69 Blah blah
'''
以下正则表达式有效并向我返回正则表达式组的内容:
reg = re.compile(r'''
(?xi)
\w\.\t*
([^\n]+) (?# anything not newline char)
''')
for c in reg.findall(s): print "line:", c
>>>line: $1000 abcde!?
>>>line: (December 31, 1993.)
>>>line: 8/1/2013
>>>line: $690 * 10% = 69 Blah blah
但是如果内容渗透到另一行,则正则表达式不起作用。
s = '''
a. $1000 abcde!? B. December
31, 1993 c. 8/1/2013 D. $690 * 10% =
69 Blah blah
'''
reg = re.compile(r'''
(?xi)
(\w\.\t*\s*)+ (?# e.g. A. or b.)
(.+) (?# the alphanumeric content with common symbols)
^(?:\1) (?# e.g. 'not A.' or 'not b.')
''')
for c in reg.findall(s): print "line:", c # no matches :(
>>> blank :(
无论是否有换行符分隔内容,我都希望获得相同的匹配项。
这就是我尝试使用否定匹配词组的原因。那么关于如何使用正则表达式或其他解决方法解决这个问题有什么想法吗?
谢谢。
保罗
最佳答案
我认为我明白你想要什么。你想 split
a. $1000 abcde!? B. December
31, 1993 c. 8/1/2013 D. $690 * 10% =
69 Blah blah
进入
a。 $1000 abcde!?
B. 1993 年 12 月\n31
c. 2013年8月1日
D. $690 * 10% =\n69 等等
对吗?那么负前瞻断言就是您想要的:
reg = re.compile(r'''
(?xs) # no need for i, but for s (dot matches newlines)
(\b\w\.\s*) # e.g. A. or b. (word boundary to restrict to 1 letter)
((?:(?!\b\w\.).)+) # everything until the next A. or b.
''')
与findall()
一起使用:
>>> reg.findall(s)
[('a. ', '$1000 abcde!? '), ('B. ', 'December \n 31, 1993 '),
('c. ', '8/1/2013 '), ('D. ', '$690 * 10% = \n 69 Blah blah\n')]
如果您不需要 a.
部分,请使用
reg = re.compile(r'''
(?xs) # no need for i, but for s (dot matches newlines)
(?:\b\w\.\s*) # e.g. A. or b. (word boundary to restrict to 1 letter)
((?:(?!\b\w\.).)+) # everything until the next A. or b.
''')
关于python - 否定先前匹配的词组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15208362/
我的应用将 SceneKit 内容的“页面”与图像和文本交替。当我从图像页面前进到新的 SceneKit 页面时,前一个 SceneKit 页面中的内容会短暂显示,然后被新内容替换。时髦。 我只使用一
我正在尝试处理(在 C# 中)包含一些数字数据的大型数据文件。给定一个整数数组,如何对其进行拆分/分组,以便如果下一个 n(两个或更多)是负数,则前一个 n 元素被分组。例如,在下面的数组中,应该使用
刚接触promises,研究过。所以我的代码和我的理解: sql.connect(config).then(function(connection) { return connection.req
目前我在 if (roobaf) block 中有一些代码,这取决于 foo 和 bar 是否为假。我可以在 block 内再次检查这些条件,但感觉像是不必要的代码重复。 if (foo) {
我是一名优秀的程序员,十分优秀!