我正在尝试使用正则表达式提取一些文本。 我想只提取那些包含“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€
答案 0 :(得分:2)
当^
处于活动状态时,您需要使用$
和/m
来锚定表达式,该表达式匹配行的开头/结尾。例如:
/^pour [0-9]+[0-9,.]*[e€]$/im
答案 1 :(得分: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”开头后跟一个或多个数字的行,然后是一个可选的逗号或带2位数的小数点,然后是欧元符号或字母e,以及任意数量的尾随空格,但没有其他字符直到行尾,并且不区分大小写:
/^Pour [0-9]+([,.][0-9][0-9])?[€e][ ]*$/i