我有一个规则清单
const keywords = [Stop,.............]
monaco.languages.register({ id: "mySpecialLanguage" });
monaco.languages.setMonarchTokensProvider("mySpecialLanguage", {
tokenizer: {
root: [
[/(?<!\w)Stop(?!\w)/, 'keyword']
],
},
});
monaco.editor.defineTheme("myCoolTheme", {
base: "vs",
inherit: false,
rules: [
{ token: 'keyword', foreground: 'f1d710' },
],
colors: {
"editor.foreground": "#000000",
},
});
monaco.editor.create(document.getElementById("container"), {
theme: "myCoolTheme",
value: `Stop
QdStop
qdStop
11Stop
StopSS
Stop11
Stopdd
`,
language: "mySpecialLanguage",
});
我期望将 keywords
中的所有单词高亮显示,列表中包含 Stop
,但以 Stop
结尾的单词仍会高亮显示
Stop 开头的效果是正确的,但是 Stop 结尾的效果是错误的,应该显示为黑色,而不是黄色
如何将其突出显示为仅用于停用词的关键字,如果前后有字母或单词,则不应突出显示
1
wwwwaaanng 291 天前
不要贴代码,直接说规则
|
2
wwwwaaanng 291 天前
如何将其突出显示为仅用于停用词的关键字,如果前后有字母或单词,则不应突出显示
没看懂你这句话想要什么规则 |
3
InDom 291 天前
零宽断言
|
4
A3m0n 291 天前 1
原文本单词和单词之间有空格分割吗?
是这样的吗? Stop One AppleStop |
5
alexsz 291 天前
\bStop\b
|
7
laters OP @wwwwaaanng #2 只匹配 Stop 其余的全部匹配
|
9
laters OP @wwwwaaanng #2 期望的是只匹配 Stop 其余的全不匹配,不管是 *Stop 还是 Stop* 还是 **Stop**
|
11
QYJ 291 天前
^Stop$:适合字符串为“Stop”
\bStop\b:适合字符串中,有独立的 Stop 单词 |
12
NoOneNoBody 291 天前
^Stop|Stop$ 适合 Stop 位于开头或结尾,不能匹配位于中间的情况
如果任意位置,直接用 Stop 不加其他符号就行了 |
13
laters OP @NoOneNoBody 只想要 Stop 独立存在的时候匹配上, xxxxStop Stopxxx 都不应该匹配上
|
15
lynan 291 天前
11 楼已经给了答案了。
就是 **^Stop$* |
16
lynan 291 天前
^Stop$
|
17
NoOneNoBody 291 天前
@laters #13
按例子和要求。#11 就可以了 |
18
llh880808 291 天前
正文里的(?<!\w)Stop(?!\w)就是零宽断言的写法,要求 stop 前后不是\w
更简洁的写法就是 5L 提供的 \bStop\b ,要求 Stop 前后必须是 boundary 我不知道你为什么测试失败,因为我在 regex101 测试两种写法都是 ok 的,链接如下: https://regex101.com/r/5Ifg8u/1 |
21
laters OP |
22
NoOneNoBody 291 天前
@laters #21
你向上看,好几个人跟你说了#11 是正确答案,你都 block 了? 为什么别人给的答案你非要加个\w 呢? PS: 我第一个回答理解错了题意,以为是要提取,但后来知道了要排除,就跟你说#11 正确了 |
23
yudoo 291 天前
chatgpt 问下比这快, 这两天刚写个脚本批量查询 mybatis 更新的表 插入的表和新增的表, 然后更新的语句批量添加更新时间, chatgpt 给的稍微改改就能用
|
24
QYJ 291 天前
@laters 我不是写 javascirpt 的 ,但是我试了一下
请这样写: [/ \bStop\b /, "custom-keyword"] 你好像是因为没有空格 这是我测试的内容:value: `213Stop Stop 213Stop Stop213 1Stop1` |
26
QYJ 291 天前
@laters
正常都是用 \bStop\b ,我在其他地方测试都是可以的,但是你用起来效果确实不对,不知道为什么 你可以这样写: [/\WStop\W/, "custom-keyword"], 测试的内容:value: `Stop 213Stop Stop Stop213 1Stop1`, |
31
xwh 290 天前
|