gpt4 book ai didi

javascript - 正则表达式匹配所有符号但单词除外

转载 作者:行者123 更新时间:2023-12-04 10:05:08 24 4
gpt4 key购买 nike

正则表达式如何匹配除单词以外的所有符号?

需要找到除单词之外的所有符号。

(.*) - 它找到所有符号。

[^v] - 它找到除字母 v 以外的所有符号

但是如何找到除单词之外的所有符号

解决方案(写在下面):

((?:(?!here any word for block)[\s\S])*?)

((?:(?!here any word for block).)*?)

((?:(?!video)[\s\S])*?)


我想找到除|end|以外的所有内容并替换除`|end| 之外的所有内容。

我尝试:

需要除|end|以外的所有

var str = '|video| |end| |water| |sun| |cloud|';
// May be:
//var str = '|end| |video| |water| |sun| |cloud|';
//var str = '|cloud| |video| |water| |sun| |end|';

str.replace(/\|((?!end|end$).*?)\|/gm, test_fun2);

function test_fun2(match, p1, offset, str_full) {
console.log("--------------");
p1 = "["+p1+"]";
console.log(p1);
console.log("--------------");
return p1;
}

输出控制台日志:

--------------
[video]
--------------
--------------

--------------
--------------

--------------
--------------

--------------

例如需要什么:

[video]( 之外的任何符号

输入 - '[video](text-1 *******any symbols except: "[video](" ******* [video](text-2 any symbols) [video](text-3 any symbols) [video](text-4 any symbols) [video](text-5 any symbols)'

输出 - <div>text-1 *******any symbols except: "[video](" *******</div> <div>text-2 any symbols</div><div>text-3 any symbols</div><div>text-4 any symbols</div><div>text-5 any symbols</div>

最佳答案

场景一

使用 best trick ever :

One key to this technique, a key to which I'll return several times, is that we completely disregard the overall matches returned by the regex engine: that's the trash bin. Instead, we inspect the Group 1 matches, which, when set, contain what we are looking for.

解决方案:

s = s.replace(/\|end\||\|([^|]*)\|/g, function ($0, $1) { 
return $1 ? "[" + $1 + "]" : $0;
});

详情

  • \|end\| - |end| 匹配
  • | - 或者
  • \|([^|]*)\| - | 被匹配,除 | 之外的任何 0+ 个字符都被捕获到第1组,然后匹配|

如果第 1 组匹配 ($1 ?),则替换发生,否则,$0,即整个匹配项,将返回结果。

JS测试:

console.log(
"|video| |end| |water| |sun| |cloud|".replace(/\|end\||\|([^|]*)\|/g, function ($0, $1) {
return $1 ? "[" + $1 + "]" : $0;
})
)

场景2

使用

.replace(/\[(?!end])[^\]]*]\(((?:(?!\[video]\()[\s\S])*?)\)/g, '<div>$1</div>')

参见 regex demo

详情

  • \[ - [ 字符
  • (?!end]) - 在当前位置之后不允许 end]
  • [^\]]* - 除了 ][
  • 之外的 0+ 个字符
  • ] - ] 字符
  • \( - 一个 ( 字符
  • ((?:(?!\[video])[\s\S])*?) - 第 1 组捕获任何字符 ([\s\S]), 0 次或多次出现,但尽可能少 (*?) 不会启动 [video]( 字符序列
  • \) - ) 字符。

关于javascript - 正则表达式匹配所有符号但单词除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55536352/

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