来自here的问题。
输入:
name 1111 color shape
name 2222 shape color
name 3333 shape
name (4444) color shape version
name.5555.JUNK.color.JUNK.shape.JUNK.version.JUNK
期待:
name (1111) color shape
name (2222) color shape
name (3333) shape
name (4444) color shape version
name (5555) color shape version
我试试:
(name).\(?(\d{4})\)?.(?=.*?(color))(?=.*(shape))(?=.*?(version)?).*?$
替换:$ 1($ 2)$ 3 $ 4 $ 5
name (1111) color shape
name (2222) color shape
name (4444) color shape
name (5555) color shape
其他
(name).\(?(\d{4})\)?.(?=.*?(color))(?=.*(shape))(?=.*?(version)).*?$
name (4444) color shape version
name (5555) color shape version
我如何改进我的正则表达式验证? 感谢。
答案 0 :(得分:0)
如果你不介意可能有一些尾随空格,这可以很简单:
(name).\((\d{4})\)(?:.*?(color)(?:.*?(shape)(?:.*?(version))?)?)?
如果你想让它更简单,不要忘记浪费更多的时间来评估:
(name).\((\d{4})\).*?(color)?.*?(shape)?.*?(version)?
对于这两个,替换为
$1 ($2) $3 $4 $5
会给你你想要的东西,至少我是否正确理解了这个问题。