gpt4 book ai didi

java - 负向Lookbehind排除java中特定长度的单词

转载 作者:行者123 更新时间:2023-12-02 10:19:18 25 4
gpt4 key购买 nike

我有一个正则表达式

\p{L}+[\s,،]*(خیابان)?[\s,،]*\p{L}+[\s,،]*(کوچه|کوی)?[\s,،]*\p{L}+[\s,،]*(پلاک \s*\d+)?(\s*کد پستی \s*\d{9})?

此正则表达式匹配任何长度为 3 或以上的拉丁字符。喜欢匹配ABC、ABCDE大于3的。

我想要的是,这个正则表达式仅在拉丁字符大于 6 的情况下匹配(比方说)。我不想更改上面的正则表达式,但只想排除小于 6 的拉丁字符匹配。

所以我添加了负向回顾

(?<!\w{1,6})

现在正则表达式变成

\p{L}+[\s,،]*(خیابان)?[\s,،]*\p{L}+[\s,،]*(کوچه|کوی)?[\s,،]*\p{L}+[\s,،]*(پلاک \s*\d+)?(\s*کد پستی \s*\d{9})?(?<!\w{1,6})

但这里所有长度的拉丁字符都被排除。

如何添加负向后查找以排除长度为 {1 到 6} 内的拉丁字符?

最佳答案

您的正则表达式失败,因为负向后查找仅检查字符串末尾的 1-6 个单词。

例如,字符串“ABCDEFG”有 7 个字符,而您的负向后查找发现“BCDEFG”有 6 个字符,然后排除所有字符串。

我认为你应该像这样修复负面的lookbehind:

(?<!^\w{1,6})

注意“^”,这意味着你的lookbehind必须从头开始检查。

关于java - 负向Lookbehind排除java中特定长度的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54451737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com