-4

我正在尝试使用正则表达式提取一些文本。我只想提取那些包含“pour 1e”或“Pour 1€”的行,仅此而已。正则表达式必须区分大小写。

这是我的正则表达式,它不像我想要的那样工作:

/Pour ([0-9.,])(€|e)/im

这是我的文字:

Tesseract Open Source OCR Engine v3.01 with Leptonica
CARDEURS
Horaire dejour de flhllll 5 19h00
pour 1€
pour 1€ supplémentaire
pour 1€ supplémentaire
pour 1€ supplémentaire
pour 1€ supplémentaire
par€ supplémentaire
Horaire de nuit de 19h00 5 flhllll
pour 1,50€
pour 1€ supplémentaire + 300 minutes
pour 1€ supplémentaire + 420 minutes
La joumée de 24 heures
35 minutes
+ 30 minutes
+ 35 minutes
+ 40 minutes
+ 45 minutes
+ 50 minutes
60 minutes
15€


Tesseract Open Source OCR Engine v3.01 with Leptonica
TARIFS
PARKING CARNOT
Homim de juur de 8:00 3 19:00 H01-aim de null de 19:00 5 8:00
mains d‘ ggg heme : G1-atuit moins d‘ ggg heure : Gmtuil
Pour 1e
Pour 1e supplémenlaire
Pour 1e suppléulentaire
Pour 1e supplémmmm
Pour 1e supplémmmm
Par e supplémenlaiI€
40 minutes
+ 40 minutes
+ 45 minutes
+ 50 minutes
+ 55 minutes
+ 55 minules
Pour 1e so nzinules
Pour 1e supplémenlaiI€ + 300 minllles
Pour 1e 5upplémenlai1Q + 420 minules
La journée a
e 24 heums 15€
4

2 回答 2

2

当处于活动状态时,您需要使用^$匹配行的开头/结尾来锚定表达式/m。例如:

/^pour [0-9]+[0-9,.]*[e€]$/im
于 2013-08-06T07:47:50.740 回答
1

使用方括号[]指定要匹配的一组字符,插入符号^匹配行首,美元符号$匹配行尾。根据您使用的正则表达式实现,您可以传递i标志以使其不区分大小写

/^Pour 1[€e]$/i

或使用字符组显式处理大小写

/^[Pp][Oo][Uu][Rr] 1[€e]$/

对于匹配重复,用于*匹配前一个字符的 0 个或多个,+匹配 1 个或多个,以及?匹配 0 或 1。

代替前面的 1 ,您可以使用

[0-9.]+ to match any 1 or more digits or decimal points
[0-9]+\.?[0-9]* to match at least 1 digit follow by an optional decimal point and more digits
[0-9]+[0-9,]*\.?[0-9]* to match at least 1 digit, optionally more digits and commas, followed by an optional decimal point and more digits

您还可以使用花括号明确指定重复次数(在某些正则表达式引擎中{},这些必须用反斜杠转义)\

[0-9]{1,3} would match 1,2 or 3 digits
[0-9]{3} would match exactly 3 digits

您可以使用括号()将正则表达式模式的一部分分组以进行反向引用或重复。

因此,要匹配以“Pour”开头的行,后跟 1 位或更多位,然后是可选的逗号或 2 位小数点,然后是欧元符号或字母 e,以及任意数量的尾随空格,但在结束之前没有其他字符行,并且不区分大小写:

/^Pour [0-9]+([,.][0-9][0-9])?[€e][ ]*$/i
于 2013-08-06T07:48:20.887 回答