gpt4 book ai didi

java - 正则表达式用两个点分隔的部分提取主题标签

转载 作者:行者123 更新时间:2023-11-30 06:41:02 25 4
gpt4 key购买 nike

我正在尝试创建一个正则表达式,以便从字符串中提取一些文本。我想从网址或普通短信中提取文本,例如:

endpoint/?userId=#someuser.id

Hi #someuser.name, how are you?

我想从消息中准确提取 #someuser.name 并从 url 中提取 #someuser.id。可能有很多这样的字符串要从 url 和消息中提取。

我的正则表达式目前看起来像这样:

(#[^\.]+?\.)([^\W]\w+\b)

它工作正常,除了一对一的情况,我不知道该怎么做 - 例如:

不应匹配这些字符串:#.id#.id#.之间必须至少有一个字符。不应匹配这些字符之间的一个或多个空格。

如何使用我当前的正则表达式来做到这一点?

最佳答案

你可以使用

String regex = "#[^.#]*[^.#\\s][^#.]*\\.\\w+";

参见 regex demoits graph :

enter image description here

详情

  • # - # 符号
  • [^.#]* - .#
  • 以外的零个或多个字符
  • [^.#\\s] - 除了 .# 和空格之外的任何字符
  • [^#.]* - - .#
  • 以外的零个或多个字符
  • \. - 一个点
  • \w+ - 1+ 个单词字符(字母、数字或 _)。

Java demo :

String s = "# #.id\nendpoint/?userId=#someuser.id\nHi #someuser.name, how are you?";
String regex = "#[^.#]*[^.#\\s][^#.]*\\.\\w+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group(0));
}

输出:

#someuser.id
#someuser.name

关于java - 正则表达式用两个点分隔的部分提取主题标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56356362/

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