我在Ruby中有一个字符串:
str = "<TAG1>Text 1<TAG1>Text 2"
我想用gsub来获取这样的字符串:
want = "<TAG2>Text 1</TAG2><TAG2>Text2</TAG2>"
换句话说,我希望将所有内容保存在<TAG1>
和EITHER之间:1)下一次出现“&lt;”或2)字符串的结尾。
我能提出的最好的正则表达式是:
regex = /<TAG1>(.*)(?:<|$)/
但问题是它只是匹配整个str,我想要的是str内的匹配。 (换句话说,似乎字符串char($)的结尾似乎优先于“&lt;”字符 - 有没有办法翻转它?
答案 0 :(得分:3)
/<TAG1>([^<]*)/
将与之匹配。如果没有<
它将一直到字符串的末尾。否则它会在遇到<
时停止。你的问题是。匹配<
。另一种方法是/<TAG1>(.*?)(?:<|$)/
,*
非贪婪。