所以我已经玩了几天了,这是我要找的东西和我现在拥有的正则表达式。我有一个这种格式的文件(还有一些其他字段,但我省略了这些字段:
我只想匹配粗体文字
ADDR 1 - XXXXXX ADDR 1 - **XXXXXX**
ADDR 2 - XXXXXX ADDR 2 - XXXXXX
ADDR 1 - XXXXXX ADDR 1 - **XXXXXX**
ADDR 2 - XXXXXX ADDR 2 - XXXXXX
我编写的regex只匹配第一个addr1-XXXXX,但我需要匹配加粗的XXXXX的所有实例。在
^{pr2}$有什么建议吗?我觉得我可能错过了一些简单的东西,但不确定。在
如果想要捕获某个对象的其他实例,那么拆分或切片字符串的速度将比使用regex快得多,下面演示了一个非常简单的基本示例:
split()方法:
findall()方法:
^{pr2}$在您知道regex不是绝对必要的情况下,请考虑使用另一种方法。同样,在接受的答案中显示的regex可以被优化以将时间缩短近一半(例如
re.findall("ADDR 1 .+ - (.+)", s
)-37.0185003658 seconds - 10000000 iterations
。在代码:
输出:
^{pr2}$工作原理:
Debuggex Demo
让我们选一行-地址1-XXXXXX ADDR 1-ABCDEF
.*ADDR
将匹配ADDR 1-XXXXXX ADDR。由于.*
匹配任何内容,而且regex本质上是贪婪的,所以为了停止,我在.*
之后添加了ADDR
\s+1\s+-\s+(.*)
将匹配rest1-ABCDEF。\s+1\s+-\s+
是必需的,因为我们需要匹配addr1而不是addr2。(.*)
将匹配ABCDEF并存储它。在相关问题 更多 >
编程相关推荐