我正在使用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>
我对Regex知之甚少,请帮助。
答案 0 :(得分:3)
正则表达式允许我们创建一些我们称之为capturing groups的东西。它们允许我们仅使用匹配文本的一部分。
例如X(a+)(b+)Y
之类的正则表达式会尝试查找XaabbbY
之类的文字并存储
a
系列b
系列。我们可以对存储在这些组中的匹配文本部分做一些事情。我们可以
Matcher#group(x)
但我们也可以在
中重复使用它\x
(其中x
表示组号)([a-z])\1
是正则表达式,只会找到对:aa
bb
... {{ 1}} 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>"
答案 1 :(得分:2)