基于正则表达式直到但不包括,我试图匹配所有字符,直到一个单词边界。
例如,在以下字符串中匹配苹果
:
apple<
我正在使用:
[^]
\b
中继器这样地:
/a[^\b]+/
它应该查找一个“a”,然后为任何非单词边界的字符获取一个或多个匹配项。所以我希望它在
var input = [ "apple<", "apple/" ];
var myRegex = /a[^\b]+/;
for (var i = 0; i < input.length; i++) {
console.log(myRegex.exec(input[i]));
}
我尝试过的几个其他正则表达式字符串:
我可以使用否定的单词边界或带规则单词边界的否定集:
/a[\B]/
我可以指定几个可能的单词结尾字符,并在否定集中使用它们:
/a[^|”
我还可以查找一个positive set,并将其限制为返回普通字母:
/a[\w]/
但是如果可能的话,我想知道如何处理单词边界。
下面是MDN的单词边界列表及其组成的字符
如果这个问题的改写是准确的:匹配所有以“a”开头的单词,那么您可能已经开始搜索现有的SO答案,比如这个。从中提取出来,你可以使用一个字符类来表示一个单词\w
,并通过在前面添加一个单词边界\b
匹配来防止匹配包含“a”的部分单词,例如“baggage”:/\ba\w/gi
var input = [ "apple<", "apple/", "baggage;" ];
var myRegexWord = /\ba\w+/i;
var myRegexPartial = /a\w+/;
for (var i = 0; i < input.length; i++) {
console.log(myRegexWord.exec(input[i]));
console.log(myRegexPartial.exec(input[i]));
}
您必须将单词边界作为正则表达式的一部分,如下所示:
/[A-Za-z]+\b/
工作演示
您还可以使用:
\w+\b
尽管这将包括下划线作为单词的一部分
单词边界(\b
)不是字符,而是字母序列和任何非字母字符之间的空字符串。此外,由于JavaScript中仍然缺乏Unicode支持,“字母”仅表示ASCII字母。
正因为如此,你
\b
,除非您的数据是某种不可能包含Unicode的计算机语言由于\b
实际上不会向匹配中添加任何字符,因此可以安全地将其附加到正则表达式中:
/.+?\b/
将匹配所有字符,直到第一个单词边界。事实上,它是一个超集:
/\w+/
这可能是你想要的,因为你只对文字感兴趣,而不是中间的东西。
问题内容: 我正在查询以获取具有特定标题的文档的URI。我的查询是: 的值实际在哪里,因为查询字符串是通过以下方式生成的: 通过上面的查询,我仅获得标题与完全相同的文档。想象一下,是由多个词组成的。我想获得文档,即使文档标题上仅出现一个字形(例如)。我该怎么办? 问题答案: 假设您有一些数据(在Turtle中): 然后,您可以使用类似以下的查询: 得到像 这样做特别整洁的是,由于您正在动态生成模式
我有这样一个字符串: 最终,我需要修改匹配的子字符串的每个实例,但我还需要修改和之前/之后的每个子字符串。 下面的正则表达式匹配a
使用正则表达式匹配表达式 为什么这两个示例匹配如下(突出显示): c# < code>a #b #c #d 具体来说,为什么第一个字符串不匹配包含最后一个#之前的所有内容? 由于单词边界(\b)是零宽度匹配,可以在单词字符(\w)和非单词字符(\ w)之间匹配,或者在单词字符和字符串的开始或结束之间匹配,我不确定以非单词字符结束表达式会如何影响匹配。
问题内容: 我想用php代替完整的单词 示例:如果我有 我用 新文本应如下所示 新hello1您好,Helloz PHP返回 NEW hello1 hello,NEWz 谢谢。 问题答案: 您要使用正则表达式。该单词边界匹配。 如果包含UTF-8文本,则必须添加Unicode修饰符“ u”,以便不会将非拉丁字符误解为单词边界:
我面临着与Java的匹配器的其他问题。我试图使用正则表达式匹配我的JSON的内容,而不使用外部库。我的JSON看起来像这样: 但是,我只想匹配上半部分中的单词,即在第一个匹配。我试图创建一个新的模式和匹配器,但我不知道如何进行,也不知道如何在第一次出现
问题内容: 我想做的是一项相当普通的任务,但我在网络上找不到任何参考。我的文字带有标点符号,我想要一个单词列表。 应该 但是只能使用一个参数,因此在用空格分割后,所有单词都带有标点符号。有任何想法吗? 问题答案: 正则表达式合理的情况: