gpt4 book ai didi

java - 正则表达式标签

转载 作者:行者123 更新时间:2023-12-01 19:56:40 46 4
gpt4 key购买 nike

我查找主题标签的正则表达式是:

String REG_EX_TAG = "[#]{1}+[A-Za-z0-9-_]+\b";
Pattern tagMatcher = Pattern.compile(REG_EX_TAG);

但是如果我插入字符串今天就是一个美丽的晴天#sun。你好,我的名字是 Mat #Sweet#Home 结果是:标签#Sweet,#Home,#sun

我宁愿结果只是标签#Sweet和#sun

如何更改我的正则表达式?

最佳答案

"\b" 匹配退格字符,而不是单词边界。你需要双重转义它。

此外,该模式似乎只匹配字符串中任何位置的任何主题标签。如果有一系列主题标签,您需要获取第一个。

您可以使用

(#[A-Za-z0-9-_]+)(?:#[A-Za-z0-9-_]+)*

请参阅regex demo .

详细信息

  • (#[A-Za-z0-9-_]+) - 第 1 组捕获 # 的第一次出现,后跟 1+ 个字母、数字、-_
  • (?:#[A-Za-z0-9-_]+)* - 匹配主题标签模式的 0 次以上重复。

仅获取组 1 值。

请参阅Java demo :

String s = "today it's a beautiful sunny day #sun. Hello my name is Mat #Sweet#Home";
Pattern pattern = Pattern.compile("(#[A-Za-z0-9-_]+)(?:#[A-Za-z0-9-_]+)*\\b");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group(1));
}
// => [#sun, #Sweet]

请注意,{1}+ 是多余的,它匹配 1 次出现的量化子模式(这是默认操作)。

关于java - 正则表达式标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49450052/

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