问题标签 [word-boundary]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
regex - 如何在不使用 match() 函数的情况下在 awk 中使用单词边界?
我想为这个 awk 命令添加单词边界:
我尝试\y
在左右添加wordA
,wordB
但它在我的测试中不起作用。
我试过这个:/\ywordA\y/&&/\ywordB\y/
谢谢大家!
(ps:我是 awk 的新手,所以我试图避免 match() 函数。)
java - 使用String的replaceAll在某些字符前面时如何不替换
我需要替换文本中的一些单词,但我需要在替换策略中放入条件,如下所示:
我想用word2替换word1:
但如果word1前面有word3 ,我不想替换它:
也就是说,如果文本是word3.word1我不想碰它。但我似乎无法使用String的方法处理单词边界。replaceAll
编辑:
如果 word1 的前缀或后缀为“-”字符,即-word1或word1-或-word1-,我也不想更改
任何帮助都是不言而喻的。
java - 如何使用 DFA 正则表达式匹配器实现正则表达式断言/环视(即 \b 样式字边界)
我想在基于 DFA 的正则表达式匹配器中实现“单词边界”匹配。有人能告诉我这是怎么做到的吗?
提供一些背景知识,我目前正在使用“dk.brics.automaton”库,但它不支持断言(例如\b
,单词边界)。我需要使用基于 DFA 的引擎,因为我的主要目标实际上是确定正则表达式的等价性,而不是进行实际匹配。
此外,以下问题的答案似乎表明这是可能的: 基于 DFA 的正则表达式匹配 - 如何获取所有匹配项? 通过说
“同样,我们通过向模拟器添加带有特殊指令的 epsilon 转换来管理这一点。如果断言通过,则状态指针继续,否则将被丢弃。”
然而,我不太明白这意味着什么。是否暗示它只能通过查看其端点的特殊类型的 epsilon 转换来完成,并且只有在其端点满足断言时才能被遍历,还是可以通过以某种方式配置的“正常”epsilon 转换来完成?如果我需要这些“特殊”类型的 epsilon 转换,那么如何确定这些(即转换为标准 DFA)?
非常感谢任何关于如何实际实现这一点的描述的指针。
javascript - 如何在 RegExp 对象中使用单词边界
我想知道的是如何在 RegExp 对象中使用单词边界。
例如:
这不起作用,我不能这样做:
因为我稍后需要用变量替换 AB。
我知道 RegExp 对象中的所有其他内容都有效,但由于某种原因,单词边界不起作用。感谢您对此问题的任何帮助。:)
示例:http: //jsfiddle.net/7Kt5A/1/
php - MySQL REGEXP 仅匹配边界词,但不包括 html 标签中的匹配
按照这个问答,我得到的结果还是有点麻烦,
例如,
REGEXP '>[^<]*lau[[:>:]]'
将仅匹配“ lau ”,但不匹配正确的“ lauren ”。
REGEXP '>[^<]*men[[:>:]]'
将匹配'赋权'和'女性',这不是我所追求的。
REGEXP '( |>|$)home( |<|$)'
将只匹配 ' home ' 而不是 ' home! ' 它应该。
如何正确匹配这些?
例如,
它不应与html 标记中的任何出现匹配。家乡 - 不匹配
php - PHP去除带有'字符边界的噪声词正则表达式
我正在尝试从字符串中删除噪音词,并且我有我认为是一个很好的算法,但我遇到了障碍。在我执行 preg_replace 之前,我删除了除撇号 (') 之外的所有标点符号。我把它放在这个 preg_replace 中:
效果很好,除了确实具有 ' 字符的单词。preg_replace 似乎将其视为边界字符。这对我来说是个问题。
有没有办法解决这个问题?也许是一个不同的解决方案?
谢谢!
这是我正在使用的示例:
在第 3 行,您将看到 preg_replace 之前的 $content 的注释
尽管我假设您可以猜到我的 noiseWords 数组是什么样的,但这只是其中的一小部分:
mysql - mysql concat regexp 单词边界和引号
这是我的查询
我用这个替换了 mysql 以使用此处另一个示例中的单词边界。但是现在我遇到了转义撇号的问题,即使有匹配项,它也无法在数据库中找到 dell'。
java - 在正则表达式中自定义边界字符
我发现它\b
用于捕获正则表达式中的边界字符。
就像正则表达式\bnull\b
和输入一样,,null,
它会捕获null
,输入.null.
也会捕获null
我想告诉\b
它应该只捕获,null,
输入的空值,而不应该考虑-null-
.null.
等的空值
我怎样才能做到这一点?
c++ - 正则表达式 - 单词边界失败
总结一下:如何防止我的正则表达式模式将字符串段误认为是全字变量名?即使我使用单词边界,它也正在替换作为更大单词一部分的字母\b
。
我正在尝试做的事情:我正在使用计算器。它有一个变量列表,在将表达式传递给解析器之前,我调用我的函数ParseVars()
来regex_search
使用模式进行变量匹配。一旦它具有与我的变量模式匹配的所有标记,我检查该字符串是否确实在变量名称列表中,如果是,我将字符串替换为变量值。此外,每次在解析器中进行计算时,我都会定义一个名称为ans1
、ans2
等的常量。
问题是:假设我定义了一个名为 的变量a
,其值为6
。(顺便说一句,map<string,double> Vars;
当我执行ParseVars("ans1")
结果字符串时,我会在其中跟踪这些内容"ans1"
。此外,使用ParseVar()
时,字符串ans1+ans2+9
保持不变。字符串9+a
变为9+6
。所以,到目前为止,我的正则表达式按预期工作。
但是,如果我这样做ParseVars("ans1+a")
,结果字符串是"6ns1+6"
. 我很困惑为什么我的正则表达式上的单词边界只有在我使用变量时才会失败,“a”总是可以在“ans1”中找到,但只有在“a”在字符串中的其他地方单独出现时它才会被替换.
我所拥有的:这是我的正则表达式模式:\b([a-z][a-z0-9_]*)\b
这不应该只匹配整个单词吗?单词边界工作正常,直到 'a' 在字符串的其他地方单独存在。也许这是我的ParseVars()
功能,这里是代码:
有了a
等于6
,我怎样才能防止ans1+a
变成6ns1+6
不想要的ans1+6
?