正则表达式获取>之间的所有数据和<

时间:2012-06-28 02:11:13

标签: java regex

我正在制作一个正则表达式,它从以下格式获取所有数据:

">DATA<" returns "DATA"

"> DATA <" returns " DATA "

">.4930894812948cm <" returns ".4930894812948cm "

"> 939j@$%^^ < > << <" returns " 939j@$%^^ < > << "

">DATA< blah blah blah >DATA123< BLah >DATA456<" returns "DATA", "DATA123" and "DATA456"

(示例中的引号是为了使它们更容易阅读;它们不应出现在实际结果中。)

DATA可以是任何编码

>DATA<可以位于文本文件中的任何位置,因此可以一个接一个地重复。此外,所有数据我的意思是全部,包括\n\r.,保留字符等。

我试过了>(.*?)<,但它没有用。

我是用Java做的。

添加另一个例子:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Integer facilisis neque tellus, eget rhoncus sapien. 
Pellentesque placerat purus non eros auctor ut consectetur magna bibendum. 
Nam sollicitudin cursus >urna< nec varius. 
Pellentesque elit augue, semper non porttitor nec, adipiscing ut ligula. 
Cras accumsan >dolor< augue. 
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. >Sed< >rhoncus< ultrices elementum. 

    >lac
    us<

 Ut elementum condimentum est > pir. < feugiat.

应该标记:

"urna"
"dolor"
"Sed"
"rhoncus"
"la
    cus"
" pir. "

...包括它们和行分隔符之间的空格。希望这会有所帮助。

3 个答案:

答案 0 :(得分:2)

这是你想要的正则表达式:

>(.*)<

您不想使用惰性运算符(?)。惰性运算符使通配符尽可能早地停止并仍然继续正则表达式(因此它在FIRST&lt;停止),但是没有?,通配符是贪婪的并且将匹配所有字符,然后向后工作直到它找到最后&lt;。

答案 1 :(得分:0)

难以辨别OP想要的是什么,但是......

>([^<]*)<将返回&gt;之间的值和&lt ;,包括可能介于两者之间的任何字符(包括&gt;和空格)。

所以:

“&gt; ABC&lt;”将返回“ABC”

“&gt; AB&gt; C&gt; D&lt;”将返回“AB&gt; C&gt; D”

“&gt; ABC”将不返回任何内容

测试用例在这里:fiddle。 (单击“Java”链接。)

答案 2 :(得分:0)

如果介于两者之间的数据不是随机的,我会建议全局+多线\>([^\<])*\<。但是,由于数据 随机,我认为你不能想出一个能够可靠地捕获所有可能在{{1之间}和>