gpt4 book ai didi

javascript - 正则表达式仅针对某些字符进行分割

转载 作者:行者123 更新时间:2023-12-03 01:22:34 24 4
gpt4 key购买 nike

我需要拆分以下文本...

'(!false =>stuff <300^ OR <=200 "TEST DATA")'

有几条规则。我需要保留引用的文本。另外,我需要分割的分隔符如下......

{'<', '>', '<=', '=>', '=', '!', '(', ')'}

在这种情况下,我的分割如下......

['(', '!', 'false', '=>', 'stuff', '<', '300^', 'OR', '<=', '200', '"TEST DATA"', ')']

我已经接近了...

input_text.match(/"[^"]*"|=[<>]|[<>]=|[<>]|[!]|[=]|[()]|\w+/g);

它在大多数情况下都有效,除了一件事之外,诸如 ^ 之类的字符不会被保留。因此,与其得到...

300^

我刚刚...

300

如何保持每个字符串完整并且仅分割提到的分隔符?

最佳答案

听起来当您匹配 \w+ 时,您还想匹配同一匹配子字符串中的 ^,因此创建一个字符集并包含 ^该字符集中的 以及 \w:

const input_text = '(!false =>stuff <300$$^300 OR <=200 "TEST DATA")';
console.log(
input_text.match(/"[^"]*"|=[<>]|[<>]=|[<>]|[!]|[=]|[()]|[\w^$]+/g)
// ^^^^^
);

如果除最后一个正则表达式之外的所有替换都处理所有特殊情况,那么另一种选择是,您可以匹配<,而不是最终匹配单词(和选定的特殊)字符em>除了空白字符之外的任何内容(如果有匹配的话,初始替换将优先):

const input_text = '(!false =>stuff <300$$^300 OR <=200 "TEST DATA")';
console.log(
input_text.match(/"[^"]*"|=[<>]|[<>]=|[<>]|[!]|[=]|[()]|[^\s]+/g)
// ^^^^^
);

关于javascript - 正则表达式仅针对某些字符进行分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51698889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com