在使用ICU-REGEXP在单词边界上执行搜索的MySQL(8.0.5+)中,它不起作用。据我了解,应该是
$ mysql -e 'SELECT REGEXP_LIKE("aaa abc ccc", ".*\b+abc\b+.*")'
+---------------------------------------------+
| REGEXP_LIKE("aaa abc ccc", ".*\b+abc\b+.*") |
+---------------------------------------------+
| 0 |
+---------------------------------------------+
但是此选项不起作用。
首先,请注意,它REGEXP_REPLACE
可以 部分 匹配字符串,.*
并且在搜索词之前和之后都不需要。
该\
字符应以定义一个反斜杠进行转义,因为\
本身允许MySQL的引擎逃逸字符。请参阅此MySQL
8文档
:
注意:
由于MySQL在字符串中使用C转义语法(例如,
\n
表示换行符),因此必须\
将在 expr 和 pat
参数中使用的任何值都加倍。
因此,您需要
REGEXP_LIKE("aaa abc ccc", "\\babc\\b")
问题内容: 我目前正在编写一个用于匹配内容中特定单词的库。 本质上,它的工作方式是将单词编译为正则表达式,然后通过所述正则表达式运行内容。 我要添加的功能是指定要匹配的给定单词是否必须以单词开头和/或结尾。例如,我有这个词。我指定它 必须开始一个字 ,因此将 匹配 的是在开始,但 不能匹配 为不启动的话。 我想使用单词边界来执行此操作,但是在进行一些测试时,我发现它无法正常运行。 采取以下措施,
问题内容: 我想在Elastisearch中使用单词边界进行正则表达式查询,但是看起来Lucene正则表达式引擎不支持。我可以使用哪些解决方法? 问题答案: 在ElasticSearch regex风格中,没有直接等效于单词边界的功能。最初是一样的东西,如果用一个字字符开始,并且尾部就像如果用一个字字符结束。 因此,我们需要确保在字符串的前后或字符串的开始/结束处有一个非单词char 。由于正则表
我正在使用以下正则表达式: 我的目标是只验证数字(int和decimal),空格, ( ), 点,AND,OR。其他一切都是不允许的。它看起来像是工作的,但是我对单词边界\bAND\b和\bOR\b Eg有问题。我不能输入ANDWE或EEE或任何组合,但我能做的是AN或A。如何在字符串中只允许两个单词AND或OR?它们在字符串中是可选的。 输入示例 0.10和23-有效 12和(15或0.2)-有
问题内容: 说我有一个字符串 和另一个字符串 我如何制作一个能够同时匹配两者的正则表达式,而不必在另一个失败的情况下将模式设置为其他形式呢?我知道会匹配,但不会对进行任何操作,但是()仅会匹配带有小数的那个,而不会返回与匹配的匹配项。 我希望返回: 要么 问题答案: 您可以在一组字符后面加上a ,使其成为可选字符。 你想要一个点后跟任意数量的数字,组合在一起,可选。坚持你的模式:
我试图找到一个Java正则表达式,即使在输入文本中有一个\n时,它也能匹配一个单词。请注意\n应该显示为原始字符串。我使用的是典型的单词边界https://regex101.com/r/Se5iVW/1。 例如 在这里,我期望有5个匹配项(前四个匹配项和最后一个匹配项)。
我正在搜索正则表达式-"。(冲突的副本。"。我为此写了以下代码 但我有个例外 异常在线程"main"中java.util.regex.Pattern Syn的异常:索引15附近的未关闭组。( 我知道编译器认为是模式组的开始。我试图通过添加来逃避),但这不起作用。 有人能告诉我怎么逃走吗?