正则表达式正确匹配组
问题描述:
我正在寻找解析自定义降价文本,如下面的例子。正则表达式正确匹配组
1
Post:1
Image:1|thumb
Image:1|thumb|html classes here
1|thumb|html classes here
一般格式为:除冒号后的ID ModelName:ID|image_size|html classes
一切(:)是可选的。请注意,该ID也可以是一个字符串。最后一个管道后面可能有许多空间分隔的CSS类。这是我到目前为止有:
^([\w\.]+)?(?::([-\w\d\.]+))(?:\|(\w+))?(?:\|([-\w\s\d]+))?$
这个正则表达式有我无法弄清楚如何解决
- 冒号应的几个问题出现在合并为主的行之前,而不是之后。换句话说,只有组1出现时才需要冒号。 (同样的想法与管道(|。第3组前)和4
- 正则表达式不顶部匹配最后3测试用例
1
和Post:1
正确匹配
答
你可以做到这一点。与
(?:(\w+):)?(\d+)(?:[^|\n]*\|([^|\n]*)(?:\|(.*))?)?
它会捕获第一标签在组1中,ID输入到第二组,图像尺寸成第三和类到第四。
首先,它ç标准标签(可选),然后是一个数字。接下来是一个也是可选的组,可以扫描|
,然后捕获所有内容直到另一个|
或行尾。如果发现|
捕获所有行到行尾。
谢谢,这绝对是朝着正确方向迈出的一步。不过,我还需要在一个组中捕获Image和Post。 – danielbker
根据你的评论编辑:) – ClasG
我编辑了你的原始正则表达式,并得到了相同的答案!谢谢你的帮助。你是一个正则表达式专家! – danielbker