我正在制作一个正则表达式,它从以下格式获取所有数据:
">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. "
...包括它们和行分隔符之间的空格。希望这会有所帮助。
答案 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之间}和>
。