考虑以下字符串:
sarga erhaerh<bar>gwegw</bar>wegweg<bar>aeg seg</bar>rgweg
我需要这样分组:
group 1: sarga erhaerh
group 2: <bar>gwegw</bar>
group 3: wegweg
group 4: <bar>aeg seg</bar>
group 5: rgweg
此字符串可以是与<bar>
元素组合的文本的任意组合。提取条形元素并不困难,请查看解决方案here
我有什么建议可以扩展它以便它也能匹配其他部分吗?
答案 0 :(得分:2)
您可以使用此正则表达式:
(<bar>.*?</bar>|.+?(?=(?:<bar>|\z)))
<强>解释强>
<bar>.*?</bar> # Match text from <bar> to </bar>
| # alternation (OR) of regex
.+? # match one or more of any characters *if*
(?= # start of positive lookahead
<bar> # Match literal text <bar> or
| # alternation
\z # end of line
) # end of positive lookahead
换句话说,我们正试图匹配:
<bar>
和</bar>
之间的文字或<bar>
以外的文字和</bar>
答案 1 :(得分:1)
试试这个:^([a-z\s]*)(<bar>.*?<\/bar>)([a-z])*(<bar>.*?<\/bar>)([a-z]+)$