gpt4 book ai didi

java - 将括号转换为链接 Java

转载 作者:行者123 更新时间:2023-12-01 16:53:17 24 4
gpt4 key购买 nike

我正在使用 java 编写一个小型 Android 应用程序。我有一些文本,其中一些单词位于括号中。我想将它们转换为链接。

* [[my text]] 
* [[my text]]
* [[my text]]

To

* <a href="http://my text">my text</a>
* <a href="http://my text">my text</a>
* <a href="http://my text">my text</a>

我对正则表达式知之甚少,请帮忙。

最佳答案

小理论

正则表达式允许我们创建一些我们称之为 capturing groups 的东西。它们允许我们仅使用匹配文本的一部分。

例如正则表达式 X(a+)(b+)Y将尝试查找类似 XaabbbY 的文本并将存储

  • 系列a在第 1 组
  • 系列b在第 2 组中。

我们可以用存储在这些组中的匹配文本部分做一些事情。我们可以

  1. 只需使用 Matcher#group(x) 获取(然后打印)它

但是我们也可以在

中重用它
  • 正则表达式 \x (其中 x 代表组号)如 ([a-z])\1是正则表达式,它只会找到对: aa bb ... yy zz ,
  • 替换为 $x (x这里也代表组号)。
  • <小时/>

    您的案例

    在您的情况下,您似乎想要替换 [[ 之间的文本和]]<a href="http://(thatText)">(thatText)</a>

    查找 [[ 之间的文本和]]我们可以使用正则表达式 \[\[(.*?)\]\]

    • 我们包围了.*?带括号,这样我们就可以只重用括号之间的部分
    • 添加 ?*?我们做了*量词reluctant这意味着不要像这样找到最大匹配

      foo [[a]] bar [[b]] baz
      ^^^^^^^^^^^^^^^

      它将尝试找到最小匹配,例如:

      foo [[a]] bar [[b]] baz
      ^^^^^
      ^^^^^

    因此,我们可以通过 $1 重复使用第 1 组中的部分进行替换。 。换句话说,我们可以替换整个 [[...]]部分类似于 "<a href="http://$1">$1</a>"

    这引导我们找到像这样的解决方案

    yourText = yourText.replaceAll("\\[\\[(.*?)\\]\\]", "<a href=\"http://$1\">$1</a>");

    关于java - 将括号转换为链接 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36237232/

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