我一直在尝试使用正则表达式提取字符串中的“指针”以将其替换为实际值。源字符串是从数据库中提取的,可以有多种形式——我希望你能明白我的意思:
我需要从中提取信息的字符串的形式是 <X Description> blah blah <Y> blah blah blah <Z Differentdescription>
我需要提取
<X Description>,
<Y>,
<Z Differentdescription>
来自字符串(以便在显示给用户之前可以用实际值替换它们)。
我认为这样的事情会起作用:(<[XYZ]( \w+)?>)+
但是,它只捕获“<X Description>
”标签(它的意思),以及“描述”(我不太明白),而没有捕获任何一个<Y>
。或 <Z Description>
我不是要解析 XML 或 HTML(我知道正则表达式不赞成这样做),并且不会有任何嵌套标签,我只需要获取匹配序列。
最终这将用于 Android 应用程序,但我需要先让正则表达式工作!
最佳答案
你可以像这样使用积极的回顾和积极的展望:
String str = "<X Description> blah blah <Y> blah blah blah <Z Differentdescription>";
Pattern pattern = Pattern.compile("(?<=<)[\\w\\s]+?(?=>)");
Matcher m = pattern.matcher(str);
while(m.find()){
System.out.println(m.group(0));
}
- (?<=<)[\w\s]+? - 将匹配
<
后跟任何单词或空格 - [\w\s]+?(?=>) - 将匹配任何后跟
>
的单词/空格
输出:
X Description
Y
Z Differentdescription
关于java - 从字符串中提取所有 <xxxx> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21533651/