gpt4 book ai didi

javascript - 匹配字符集但否定序列的正则表达式

转载 作者:行者123 更新时间:2023-11-30 00:01:49 25 4
gpt4 key购买 nike

我正在尝试匹配一系列分隔符,但每当连字符作为前后字符时都取反:

例如 [\u002D\u0020] 将匹配所有空格和连字符。

I have wi-fi

但是,我希望 wi-fi 不匹配,因为它前后都有一个字母字符。 (例如 \w+\u002D\w+)

如何在匹配字符集时取反序列?另外,\w 是否仅限于拉丁字母字符?引擎是否了解文化,例如阿拉伯语和土耳其语?

编辑:只是为了进一步解释我想要实现的目标。我想从一个句子中收集所有标点符号和特定字符并忽略所有单词(例如 -+#$%,等)。

每当有带连字符的词(例如最先进的)时,我都希望忽略整个词。 "this is# a %state-of-the-art design"我打算获得以下集合:“#, %”。

最佳答案

尝试匹配所有带连字符的单词,并使用 XRegExp 在所有其他上下文中匹配和捕获 非单词字符:

var s = "this is# a %statè-òf-thè-árt or state-of-the-art design";
var rx = XRegExp("\\p{L}+(?:-\\p{L}+)+|([^\\p{L}\\p{N}_ ])","g");
var res = [];
XRegExp.forEach(s, rx, function(match, i) {
if (match[1]) res.push(match[1]);
});
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-all-min.js"></script>

模式匹配:

  • \\p{L}+(?:-\\p{L}+)+ 一个或多个字母 (\\p{L}+)后跟 1 个或多个 - 序列和 1+ 个字母
  • | - 或
  • ([^\\p{L}\\p{N}_ ]) - 第 1 组捕获除空格、_、字母 (\\p{L}) 和数字 (\\p{N})。

只有第 1 组的内容应该被推送到结果数组。

关于javascript - 匹配字符集但否定序列的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40178873/

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