在字符串正则表达式之前提取值

时间:2016-07-27 13:54:47

标签: php regex pcre

我有一个问题,需要在定义的字符串之前提取一个值,但我不能,例如需要提取值“Pudahuel”,这个词(dinamic)它是在“Horario”之前,任何建议?

 Orden de Trabajo
                                                            N° 0200087663


                                                                 Pudahuel Horario Atención: LU a VI de 08:30 a 13:00 y 14:30 a 19:00
Datos de Recepción:

示例链接:https://regex101.com/r/zN2vG6/29

2 个答案:

答案 0 :(得分:1)

(.*)(?=Horario)文本之前,您的Horario匹配除换行符之外的0 +字符(因为您没有使用DOTALL修饰符)。请注意,您需要的单词之间存在换行符。

使用以下正则表达式

(\w+)\s*Horario

请参阅regex demo

您需要的值将在第1组中。您可以使用\w+,甚至{{1},而不是[a-zA-Z0-9_](一个或多个字符,来自[a-zA-Z]+范围的字符) (任何1+个字母)。

注意:当你在模式/字符串中有Unicode字符时,你需要使用\p{L}+修饰符:

/u

your suggested pattern(有点增强):

/(\w+)\s*Horario/u

答案 1 :(得分:0)

您的初始字符串可能包含垂直/水平制表符,请使用以下正则表达式:

(\b[\w ]*?)[\v\h]?(?=Horario)

DEMO link