有这个字符串:
Paquete Trend Exterior -alfombrillas,faros antiniebla,llantas de aleaciónde15-(300),Paquete Winter -asientos delanteros calefactables,parabrisastérmico-(300),Paquete City -control de aparcamiento trasero,retrovisoresplegableseléctricamente-(250)。
我尝试了这个reg表达式:
/.\*-.\*- \\(.*\\)/
要得到这个:
Array
(
[0] => Array
(
[0] => Paquete Trend Exterior -alfombrillas, faros antiniebla, llantas de aleación de 15- (300)
[1] => Paquete Winter -asientos delanteros calefactables, parabrisas térmico- (300)
[2] => Paquete City -control de aparcamiento trasero, retrovisores plegables eléctricamente- (250)
)
)
但我有这个:
Array
(
[0] => Array
(
[0] => Paquete Trend Exterior -alfombrillas, faros antiniebla, llantas de aleación de 15- (300), Paquete Winter -asientos delanteros calefactables, parabrisas térmico- (300), Paquete City -control de aparcamiento trasero, retrovisores plegables eléctricamente- (250)
)
)
我如何分割结果?
给出的字符串也可能是这样的:
Bola de remolque desmontable (350 euros), control de velocidad -mega, chachi- (150), cristales traseros tintados (120), pintura blanco sólido (150), Paquete Titanium Cuero -llantas de aleación de 17, tapicería de cuero, asientos delanteros calefactables- (600), Paquete Panorámico -techo solar panorámico, cristales tintados- (600).
并且id喜欢匹配“Bola de remolque desmontable(350欧元)”格式。有可能吗?
答案 0 :(得分:3)
问题是*
是贪婪的,因此它将匹配尽可能多的字符串。您可以*
非贪婪,如*?
。
因此:
/.*?-.*?- \(.*?\)/
打印:
[0] => Paquete Trend Exterior -alfombrillas, faros antiniebla, llantas de aleación de 15- (300)
[1] => , Paquete Winter -asientos delanteros calefactables, parabrisas térmico- (300)
[2] => , Paquete City -control de aparcamiento trasero, retrovisores plegables eléctricamente- (250)
如果您希望同时移除,
,请考虑制作第一个字符\w
,如果这是足够通用的话[^, ]
而不是\w
也可以)。
/\w.*?-.*?- \(.*?\)/
打印:
[0] => Paquete Trend Exterior -alfombrillas, faros antiniebla, llantas de aleación de 15- (300)
[1] => Paquete Winter -asientos delanteros calefactables, parabrisas térmico- (300)
[2] => Paquete City -control de aparcamiento trasero, retrovisores plegables eléctricamente- (250)
对于第二个字符串
您可以将-.*?-
作为可选项,将其括在括号中并在其后放置?
(?:
只是使其成为非捕获组,因此它不会输出同样,它不会改变匹配)。
/\w.*?(?:-.*?-)? \(.*?\)/
或者你可以做一些更简单的事情,这对两个字符串都有效:
/\w.*?\)/
答案 1 :(得分:1)
答案 2 :(得分:1)
将正则表达式更改为:
/.*?-.*?- \(.*?\)/
*?
匹配零次或多次,但与*
不同,它匹配的次数尽可能少。
在您的版本中,第一个.*
匹配Paquete City
以外的所有内容。
阅读http://www.regular-expressions.info/repeat.html了解详情。
你也可以使用:
/[^-]*-[^-]*- \([^\)]*\)/
通常一个好主意是更具体地说明可以匹配的内容,而不是使用.
。
答案 3 :(得分:1)
尝试按(?<=[(]\d+( euros)?[)]), +
分割。
答案 4 :(得分:0)
此处 - &gt; http://regexr.com?355dp
RegExp:/[^, ][^(]*[(][0-9]*[)]/g
模式:[^, ][^(]*[(][0-9]*[)]