当单词后面没有连字符、下划线和字母数字时如何捕获它
How to capture a word when it's not followed by hyphens, underscores, and alphanumeric
如果单词 "entity" 后面没有连字符、下划线和字母数字,并且忽略其后的任何其他内容,我该如何捕获它?
比如我想在以下几种情况下抓取"entity"这个词:
entity
entity,
[entity]
但我不希望它在以下情况下捕获单词:
entity-foo
entity_bar
entityfoobar
entity0foo
我最远的是:
(entity)[^-$a-zA-Z_0-9]
但是,上面的正则表达式标识:
entity,
不忽略 ,
entity]
不忽略 ]
我正在尝试在 Sublime Syntax 定义中捕获此标记。
听起来像是 lookaheads 的工作!
像这样的东西应该可以工作:
(entity)(?=[\s,\]])
解释:
(?<=\[)?
:(?<=regex)
构造是一个回顾。我们通过使用尾随 ?
使其成为可选的。这个 lookbehind 在我们的正则表达式 前面寻找 [
字符
(entity)
:匹配短语entity
并捕获它
(?=[\s,\]])
:向前看 ((?=regex)
),查找 \s
、,
和 ]
中的任何一个。 \s
在 RegEx 中匹配一个空白字符,包括空格、制表符、换行符等
我的模式的一个警告是短语 entity]
将被匹配,没有前导 [
,这在您的示例中没有指定。这可能是 expanded further,但它会开始变得混乱,而且可能没有必要,无论如何。
对于 OP 和规则 "when it's not followed by hyphens, underscores, and alphanumeric" 发布的示例,也可以使用 negative lookaheads:
entity(?![0-9a-zA-Z_-])
实质上匹配 entity
只要它是 而不是 后跟数字、字母数字、_
(下划线)或 -
(连字符)。
如果单词 "entity" 后面没有连字符、下划线和字母数字,并且忽略其后的任何其他内容,我该如何捕获它?
比如我想在以下几种情况下抓取"entity"这个词:
entity
entity,
[entity]
但我不希望它在以下情况下捕获单词:
entity-foo
entity_bar
entityfoobar
entity0foo
我最远的是:
(entity)[^-$a-zA-Z_0-9]
但是,上面的正则表达式标识:
entity,
不忽略,
entity]
不忽略]
我正在尝试在 Sublime Syntax 定义中捕获此标记。
听起来像是 lookaheads 的工作!
像这样的东西应该可以工作:
(entity)(?=[\s,\]])
解释:
(?<=\[)?
:(?<=regex)
构造是一个回顾。我们通过使用尾随?
使其成为可选的。这个 lookbehind 在我们的正则表达式 前面寻找 (entity)
:匹配短语entity
并捕获它(?=[\s,\]])
:向前看 ((?=regex)
),查找\s
、,
和]
中的任何一个。\s
在 RegEx 中匹配一个空白字符,包括空格、制表符、换行符等
[
字符
我的模式的一个警告是短语 entity]
将被匹配,没有前导 [
,这在您的示例中没有指定。这可能是 expanded further,但它会开始变得混乱,而且可能没有必要,无论如何。
对于 OP 和规则 "when it's not followed by hyphens, underscores, and alphanumeric" 发布的示例,也可以使用 negative lookaheads:
entity(?![0-9a-zA-Z_-])
实质上匹配 entity
只要它是 而不是 后跟数字、字母数字、_
(下划线)或 -
(连字符)。