java - 根据位置提取双引号之间的单词

标签 java regex

我有一个包含多个引号的单个字符串,即:

“布鲁斯·韦恩”“43”“男”“哥谭”

我想创建一个使用正则表达式的方法,根据位置从字符串中提取某些值。

例如,如果我传递 Int 值 1 和 3,它应该返回一个字符串: “布鲁斯·韦恩”“男”

请注意双引号是字符串的一部分,并且是转义字符 (\")

最佳答案

如果(可能的)组数已知,您可以使用正则表达式,如 "(.*?)"\s*"(.*?)"\s*"(.*?)"\s*"(.*?)"以及PatternMatcher并按编号访问组(组 0 将始终是第一个匹配项,组 1 将是表达式中的第一个捕获组,依此类推)。

如果组数未知,您可以使用表达式 "(.*?)"并使用Matcher#find()也在循环中应用表达式并将所有匹配项(在这种情况下为组 0)收集到列表中。然后使用索引访问列表元素(元素 1 将位于索引 0)。

另一种选择是使用 string.replaceAll("^[^\"]*\"|\"[^\"]*$","").split("\"\\s*\"") ,即删除前导和尾随双引号及其之前或之后的任何文本,然后在引号上拆分,中间有可选的空格。

示例:

  • 假设字符串 optional crap before "Bruce Wayne" "43" "male" "Gotham" optional crap after
  • string.replaceAll("^[^\"]*\"|\"[^\"]*$","")将导致Bruce Wayne" "43" "male" "Gotham
  • 正在申请split("\"\\s*\"")上一步的结果将产生数组 [Bruce Wayne, 43, male, Gotham]
  • 然后只需通过索引(从零开始)访问数组元素

关于java - 根据位置提取双引号之间的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36178128/

相关文章:

java - 移动鼠标时出现消息上的工具提示

java - 如何从 android spinner 获取文本?

java - 如何在 QueryDSL 中使用按位运算符?

java - 使用 flatMap 和过滤器过滤可观察对象是否正确?

regex - .htaccess:重定向除一个页面之外的所有页面

java - 正则表达式最后一次出现,后面仍然有关键字

javascript - 将文本拆分为 block (Javascript、正则表达式)

java - 如何通过用户输入显示JOptionPane

python - mysql 中的正则表达式解析存储

regex - Netbeans - 查找不包含特定文本的文件