Lucene Regex 用于字母数字匹配但不是所有数字
Lucene Regex for alphanumeric match but not all numeric
我想在 lucene 自动机正则表达式中找到字母数字单词,但不完全是数字,甚至不完全是字母。
我试过了
(([a-zA-Z0-9]{1,10})&(.*[0-9].*))
但是这个returns也都是数字词
所以我试图否定下面的所有数字,但它不起作用
(^[0-9])(([a-zA-Z0-9]{1,10})&(.*[0-9].*))
输入字符串:
- DL200, dal2, 700091
预期输出:
DL200 和 dal2
但不应该 return 700091
不太了解 lucene 正则表达式风格,但一些研究让我了解到它 不 支持 PCRE
库,但是支持一些标准运算符。我发现它不包括 lookarounds nor 字边界。看看 docs.
无论哪种方式,为了克服环顾四周缺乏支持的问题,我查看了 较旧的 SO post 以改用 ~
。此外,我看到您可以使用 &
运算符来检查字符串是否匹配 multiple patterns.
假设以下模式可能适合您:
~[0-9]+&~[^0-9]+&[A-Za-z0-9]{2,10}
~[0-9]+
- 否定仅由数字组成的字符串。
&
~[^0-9]+
- 否定仅由 non-numbers 组成的字符串。
&
[A-Za-z0-9]{2,10}
- 匹配由 2 到 10 个字母数字字符组成的字符串。
在 JvdV
答案的帮助下和 的帮助下,我能够获得所需的输出
(([a-zA-Z0-9]{1,10})&(.*[0-9].*))&~([0-9]*)
我想在 lucene 自动机正则表达式中找到字母数字单词,但不完全是数字,甚至不完全是字母。 我试过了
(([a-zA-Z0-9]{1,10})&(.*[0-9].*))
但是这个returns也都是数字词 所以我试图否定下面的所有数字,但它不起作用
(^[0-9])(([a-zA-Z0-9]{1,10})&(.*[0-9].*))
输入字符串:
- DL200, dal2, 700091
预期输出: DL200 和 dal2
但不应该 return 700091
不太了解 lucene 正则表达式风格,但一些研究让我了解到它 不 支持 PCRE
库,但是支持一些标准运算符。我发现它不包括 lookarounds nor 字边界。看看 docs.
无论哪种方式,为了克服环顾四周缺乏支持的问题,我查看了 ~
。此外,我看到您可以使用 &
运算符来检查字符串是否匹配 multiple patterns.
假设以下模式可能适合您:
~[0-9]+&~[^0-9]+&[A-Za-z0-9]{2,10}
~[0-9]+
- 否定仅由数字组成的字符串。&
~[^0-9]+
- 否定仅由 non-numbers 组成的字符串。&
[A-Za-z0-9]{2,10}
- 匹配由 2 到 10 个字母数字字符组成的字符串。
在 JvdV
答案的帮助下和
(([a-zA-Z0-9]{1,10})&(.*[0-9].*))&~([0-9]*)