【问题标题】:Extracting String's from a String JAVA从字符串JAVA中提取字符串
【发布时间】:2015-04-18 07:43:34
【问题描述】:

你好我想提取“你好,世界!” JAVA 中给定字符串中的“and”和“This is a minimum.....”段落。我在提取时遇到问题,谁能帮我解决一下?

所以我总是得到不同的字符串,并想提取两个方括号 []......[] 之间的字符串。

String s1="[sh1] Hello, World! [/s11] and [pp]This is a minimal "hello world" HTML document. It demonstrates the basic structure of an HTML file and anchors. [/xy]"

谢谢

【问题讨论】:

  • 你有什么代码要分享吗?
  • 我正在使用 GET 请求获取所有 HTML 源代码,并希望从字符串中删除标签,然后我只想打印正文中的任何内容,即标签之间的字符串。所以我使用 String s1=s.substring(s.indexOf("")+6,s.indexOf("")); 分隔正文内容现在我更想删除所有标签并在它们之间打印字符串。

标签: java string parsing


【解决方案1】:

使用 Pattern & Matcher 匹配方括号:

Pattern pattern = Pattern.compile("\\[[^\\]]*\\]([^\\]]*)\\[[^\\]]*\\]");
Matcher matcher = pattern.matcher(s1);
while (matcher.find()) {
  System.out.println( "Found value: " + matcher.group(1).trim() );
}

演示:https://ideone.com/kNKBgg

【讨论】:

  • 感谢您的帮助,但它给出了 2 个错误 Clientonly.java:82: 错误:非法转义字符 Pattern pattern = Pattern.compile("](.*?)["); ^ Clientonly.java:82: 错误:非法转义字符 Pattern pattern = Pattern.compile("](.*?)["); ^
  • 感谢 Nagarjun 的帮助,但它们不起作用。在这个问题中,实际上我想要 .... 2 个方括号之间的字符串,但是当我输入 时输入问题时,它需要它是一个 HTML 代码,因此不打印 这就是为什么我必须打印 []。
  • 我正在使用 GET 请求获取所有 HTML 源代码,并希望从字符串中删除标签,然后我只想打印正文中的任何内容,即标签之间的字符串。所以我使用 String s1=s.substring(s.indexOf("")+6,s.indexOf("")); 分隔正文内容现在我更想删除所有标签并在它们之间打印字符串。
  • @Arnav 正如 Ana 在下面的回答中提到的,如果您正在解析 HTML 文档,则应该使用 DOM 或 SAX 解析器。我的解决方案也可以修改为匹配 HTML,但不推荐这样做。
  • 嗨 Nagarjun,你能帮我解决 /\]*\>([^]*)\]*\>([^]*)\
【解决方案2】:

请不要使用 RegEx-es 来执行此操作(这是 Pattern 和 Matcher 所做的) - 请参阅 here 了解您不应该这样做的原因。虽然您可以在特定的括号示例中使用它,但如果您期望完整的 HTML,请不要这样做。

如果您想从 HTML 中提取内容,请使用解析器,例如 SAXParser 或 DOMParser - 有关示例,请参见 Oracle documentation

【讨论】:

  • 谢谢。那是正确的。但是我的答案是匹配字符串中的方括号,如 BBCode,因为操作的描述意味着它。
  • 感谢 Ana 和 Nagarjun。欣赏它。
猜你喜欢
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 1970-01-01
  • 2012-01-23
  • 2018-10-25
相关资源
最近更新 更多