前瞻和分组
在 Java 中,在像 foo
,我应该想要一个带有组的正则表达式,它给我一个查找“foo”,“bar”,空字符串,然后是“thing”,“again”,“now”。
如果我执行 (.*?)
,我只得到两个组 (foo bar,事情又来了,而且我还没有“现在”结束)。
如果我这样做 (.*?)
我得到 foo bar 空字符串,然后再次出现并空字符串(这里我应该想要“现在”)。
请问有什么神奇的公式吗?
谢谢。
In Java, on a text like foo <on> bar </on> thing <on> again</on> now
, I should want a regex with groups wich give me with a find "foo", "bar", empty string, then "thing", "again", "now".
If I do (.*?)<on>(.*?)</on>(?!<on>)
, I get only two group (foo bar, thing again, and I've not the end "now").
if I do (.*?)<on>(.*?)</on>((?!<on>))
I get foo bar empty string, then thing again and empty string (here I should want "now").
Please what is the magical formula ?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您坚持使用正则表达式执行此操作,那么您可以尝试使用
\s*<[^>]*>\s*
作为分隔符:我不确定这是否完全正确你需要什么,因为还不太清楚。
也许需要这样的东西:
这不处理嵌套标签。如果你有这些,你真的想转储正则表达式并使用实际的 HTML 解析器。
如果您不希望数组中间有空字符串,则只需
(?:delimiter)+
即可。If you insist on doing this with regex, then you can try to use
\s*<[^>]*>\s*
as delimiter:I'm not sure if this is exactly what you need, because it's not exactly clear.
Perhaps something like this was required:
This doesn't handle nested tags. If you have those, you'd really want to dump regex and use an actual HTML parser.
If you don't want the empty string in the middle of the array, then just
(?:delimiter)+
.我的建议
之前和之后匹配文本,
之间的文本。
和下一个Matcher.find()
的循环来对所有出现的情况进行排序(如果可能)。无需使用一个庞大的正则表达式一次性完成所有操作!My recommendations
<on>
and after</on>
<on>
and next</on>
Matcher.find()
to sequence through all occurences, if possible. No need to do all at once with one big fat regexp!