regex - java中复杂的正则表达式分隔符
问题描述
我想用一个非常具体的分隔符分割一个字符串。
前任。文本 :
你好%!%!%;toto%!%;titi%!%!%;tata%;big%;level!%%;popo
分隔符必须是“%;” 并且必须是:
- 具体按这个顺序
- 前面没有 %!
所以在这个例子中,我的分割会返回:[hello%!%!%;toto%!%;titi%!%!%;tata] [big] [level!%] [popo]
到目前为止,我的正则表达式看起来像这样:
[^%!](%;)
但它不匹配最后一个分隔符,前两个也匹配 %; 之前的字符。
任何帮助,将不胜感激。
解决方案
你写[^%!]
的。这意味着:任何不在列表中的字符%!
。那不是你想要的。
您可以使用否定的“向后看”表达式:匹配模式(?<!...)
在哪里...
所以你的整个正则表达式将是:(?<!%!)(%;)
推荐阅读
- python - IronPython:通过 C# 代码进行脚本验证
- php - Laravel 多语言 url 翻译不起作用
- python - (KivyMD) 如何更改 MDLabel 的文本?
- javascript - 如何使用 Select 保持基本下拉菜单打开?
- hadoop - 试图将文件夹从本地移动到包含 %20 的 hdfs。无法复制目录
- rust - 我们如何在 sqlx rust 中定义一个 jsonb 和 UUID 字段?
- python - 启动前的内核访问和停止进程
- c - Realloc() 用于结构
- tomcat8 - 什么是文件 .asscache (tomcat 8)
- hybris - 启用/禁用 b2bunit 的权限