首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有从字符串中提取分号分隔值的RegEx .可能包含带分号的字符串

是否有从字符串中提取分号分隔值的RegEx .可能包含带分号的字符串
EN

Stack Overflow用户
提问于 2022-02-06 13:54:45
回答 2查看 100关注 0票数 0

我想从字符串分号中提取值,分号分隔的值也可以包含分号,但不是分隔符。我在这个网站上找到的RegEx (我丢了帖子)几乎是完整的,因为它分离了键和它的值。

示例: my.parameter 10; the.foo "Procedural Map"; pve; server.description "This; is \"my\", my description,.\n"

当前结果与 [^;“]+x”(?:“\[^”])*“/g”

代码语言:javascript
复制
[
  'server.seed',
  '10',
  'pve',
  'server.level',
  '"Procedural Map"',
  'server.description',
  '"This; is \\"my\\", server; description,."'
]

期望结果

代码语言:javascript
复制
[
  'my.parameter 10',
  'the.foo "Procedural Map"',
  'pve',
  'server.description "This; is \"my\", server; description,.\n"'
]

你能帮我改进RegEx来分组参数及其值吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-06 15:13:34

您可以使用重复模式首先匹配除;以外的任何字符,然后可选地从开头到结束双引号匹配,并在中间匹配转义双引号。

在此之后,可选地重复字符类[^";\\]*,以匹配结束双引号之后的内容。

代码语言:javascript
复制
[^;"\\]+(?:"(?:[^"\\]*(?:\\.[^"\\]*)*)"[^";\\]*)*
  • [^;"\\]+匹配1+乘以除; " \以外的任何字符
  • (?:非捕获组作为一个整体重复
    • "匹配
    • (?:非捕获群
      • [^"\\]*匹配0+乘以除" \以外的任何字符
      • (?:\\.[^"\\]*)*可选择地重复匹配\和任何字符,后面跟着0+时间,除"\之外,任何字符都可以重复匹配

代码语言:javascript
复制
- `)` Close the non capture group
- `"` Match literally
- `[^";\\]*` Optionally match any char except `"` `;` `\`
  • )*关闭外部非捕获组并可选择地重复

Regex演示

票数 0
EN

Stack Overflow用户

发布于 2022-02-06 15:04:50

我找到了一个解决办法,方法是用ASCII分离器(␟)替换分隔符,然后分割结果。

代码语言:javascript
复制
const separatorPattern = /; (?=([^"]*"[^"]*")*[^"]*$)/g;

const myRawString = "server.seed 10; server.pve, server.level \"Procedural Map\"; server.description \"This; is \\\"my\\\", server; description,.\"";
const replacedSeparator = myRawString.replace(separatorPattern, "␟");
const parameters = replacedSeparator.split("␟");

console.log(parameters);
/*[
  'server.seed 10',
  'server.pve, server.level "Procedural Map"',
  'server.description "This; is \\"my\\", server; description,."'
]*/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71007865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档