【发布时间】:2014-02-25 10:13:03
【问题描述】:
我有一个文件,我想用正则表达式解析。到目前为止,它已经适用于许多不同的文件,但是这个需要一些不同的东西。我有以下示例文本:
Test1 £4000 £5000
Here street
Here
UK
Test2 £2 £1000
There street
There
UK
Test3 £100 £1000
Haha street
Funnyville
Ireland
对于第一个,例如,我需要得到 3 个东西,£4000、£5000 和
Test1
Here street
Here
UK
我正在使用正则表达式字符串((.*)[^\x00-\x7F](.*)[^\x00-\x7F](.*)\n((.*\n){1,5})),这在某种程度上可以使它正确,但仅匹配Test1 和Test3。你可以在http://regex101.com/r/tT9pR8看到这个例子
我试图在这部分 ((.*\n){1,5}) 中找到一种方法来说明该行不能包含 £ 符号。 ([^\x00-\x7F])。我尝试了几种不同的方法,例如使用^[^\x00-x7F],但没有一个返回任何匹配项。
匹配这个的最佳方法是什么?注意:任何想知道的人都必须使用正则表达式。
编辑:文本实际上被不应匹配的其他文本包围。实际文本如下所示,使用 Robin 在下面的答案将“START STRING”和“END STRING”匹配为第一个和最后一个匹配项。 “START STRING”和“END STRING”将是常数。见http://regex101.com/r/gM6vL0
START STRING
Test1 £4000 £5000
Here street
Here
UK
Test2 £2 £1000
There street
There
UK
Test3 £100 £1000
Haha street
Funnyville
Ireland
END STRING
编辑 2:END STRING 实际上更像 END STRING £4545 £4554,因此它与 Robin 的模式相匹配,如 http://regex101.com/r/oC0xL2 所示
文件中还有其他匹配模式的匹配项,不在START STRING和END STRING之间,因此不应匹配/
【问题讨论】:
标签: regex match regex-negation