regex - 使用转义管道分隔符解析正则表达式
问题描述
我试图解析
|123|create|item|1497359166334|Sport|Some League|\|Team\| vs \|Team\||1497359216693|
使用正则表达式(https://regex101.com/r/KLzIOa/1/)
我目前有
[^|]++
哪个正确解析所有内容,除了\|Team\| vs \|Team\|
我希望这被解析为|Team| vs |Team|
如果我将正则表达式更改为
[^\\|]++
它单独解析团队,而不是与转义管道一起解析
基本上我想解析管道之间的字段,但是,如果有任何转义的管道,我想捕获它们。所以以我的例子我希望
["123", "create", "item", "1497359166334", "Sport", "Some League", "|Team| vs |Team|", "1497359216693"]
解决方案
您可以交替使用:
\\.
- 文字反斜杠后跟任何内容,或[^|\\]+
- 除了管道或反斜杠之外的任何内容
(?:\\.|[^|\\]+)+
https://regex101.com/r/KLzIOa/2
请注意,不需要所有格量词,因为不会发生回溯。
如果您还想将\|
s替换为|
s,然后再执行此操作:匹配\\\|
并替换为|
.
推荐阅读
- couchbase - 向 couchbase REST API 端点添加身份验证?
- java - Keycloak:无法获取角色的属性
- php - SQLSTATE[HY000] [1045] 用户'root'@'localhost'的访问被拒绝(使用密码:NO)(SQL:select * from `permissions`)
- docker - 尝试访问 traefik 仪表板时出现 404
- jquery - Internet Explorer 11 在交互超过 1000 行并使用 jQuery 隐藏每个元素时崩溃
- python - Python将xml文件转换为csv
- ffmpeg - 使用 ffmpeg 发送 udp cbr 内容会导致内存问题
- c# - AspNet Core - 动态剃刀视图无法显示控制器中传递的值
- python - ValueError: x, y, and format string must not be None 是什么意思?
- mysql - MySql如何在一个项目上远程协作