Regex 在正则表达式中拆分匹配
有这个字符串: 帕奎特时尚外观-阿尔福布里拉斯、法罗斯·安蒂涅布拉、兰塔斯 aleación de 15-(300),Paquete Winter-亚洲德兰特罗斯酒店 可加热材料,parabrisas térmico-(300),帕奎特市-控制区 retrovisores plegables eléctricamente-(250)trasero公寓 我试过这个表达:Regex 在正则表达式中拆分匹配,regex,split,Regex,Split,有这个字符串: 帕奎特时尚外观-阿尔福布里拉斯、法罗斯·安蒂涅布拉、兰塔斯 aleación de 15-(300),Paquete Winter-亚洲德兰特罗斯酒店 可加热材料,parabrisas térmico-(300),帕奎特市-控制区 retrovisores plegables eléctricamente-(250)trasero公寓 我试过这个表达: /.\*-.\*- \\(.*\\)/ 要获得此信息: Array ( [0] => Array
/.\*-.\*- \\(.*\\)/
要获得此信息:
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).
我想匹配“Bola de remolque desmontable(350欧元)”格式。有可能吗?这里->
RegExp:/[^,][^(]*[(][0-9]*[)]/g
模式:[^,][^(]*[(][0-9]*[)]
此处->
RegExp:/[^,][^(]*[(][0-9]*[)]/g
模式:
[^,][^(]*[(][0-9]*[)]
你觉得这个怎么样
/.*?\(\d+\)[,\.]/
你觉得这个怎么样
/.*?\(\d+\)[,\.]/
问题在于
*
是贪婪的,因此它将尽可能多地匹配字符串。您只需将*
设置为非贪婪,如*?
中所示
因此:
印刷品:
[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)
[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也会起作用。
印刷品:[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)
[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.*?\)/
问题是
*
是贪婪的,因此它将尽可能多地匹配字符串。您只需将*
设置为非贪婪,如*?
中所示
因此:
印刷品:
[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)
[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也会起作用。
印刷品:[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)
[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.*?\)/
将正则表达式更改为:
/.*?-.*?- \(.*?\)/
*?
匹配零次或多次,但与*
不同的是,它匹配的次数尽可能少
在您的版本中,第一个*
匹配到Paquete City
的所有内容
阅读了解更多信息
您还可以使用:
/[^-]*-[^-]*- \([^\)]*\)/
通常最好更具体地说明可以匹配的内容,而不是使用
将正则表达式更改为:
/.*?-.*?- \(.*?\)/
*?
匹配零次或多次,但与*
不同的是,它匹配的次数尽可能少
在您的版本中,第一个*
匹配到Paquete City
的所有内容
阅读了解更多信息
您还可以使用:
/[^-]*-[^-]*- \([^\)]*\)/
通常最好更具体地说明可以匹配的内容,而不是使用
尝试按拆分(?尝试按拆分)(?您使用的是哪种编程语言的正则表达式?实际上我正在使用此页面测试…,键入:perlI不认为您必须逃避-
。是的,您是对的sebasTry将*
更改为[^-]*
由于
在技术上可以匹配-
示例:您使用的是哪种编程语言的正则表达式?实际上我正在使用此页面来测试…,键入:perlI不认为您必须逃避-
。是的,您将*
更改为[^-]*
由于
在技术上可以匹配-
示例:我实际上不想匹配每个结果之间的coma如果匹配逗号或点,您当然可以不使用它:/.\(\d+\)/
仍将匹配我实际上不想匹配每个结果之间的coma如果匹配逗号或点,当然可以将其禁用:/.*?\(\d+\)/
仍将匹配我实际上不想匹配每个结果之间的昏迷谢谢,现在现实比我上面编辑的要复杂一点我实际上不想匹配每个结果之间的昏迷谢谢,现在现实比我上面编辑的要复杂一点请注意,\(*?)
也将匹配非数字字符,因此如果标题中有括号,例如:Paquete Winter(特厚)
,那么它将从那里拆分。谢谢大家,现在现实情况比我上面编辑的要复杂一些。@Rimbuaj对于第二个,稍微简单一点的东西可以工作-/[^,].*\)/
(也适用于第一个)。请注意,\(.*?\)
也将匹配非数字字符,因此如果标题中有括号,例如:Paquete Winter(特厚)
然后它将从那里分离出来。谢谢大家,现在的现实比我上面编辑的要复杂一些。@Rimbuaj对于第二个,稍微简单一点的东西可以工作-/[^,].*.\)/
(同样适用于第一个)谢谢,现在现实比我上面编辑的要复杂一点谢谢,现在现实比我上面编辑的要复杂一点