Java 检查XML标记中的字符串长度-regex
我想使用正则表达式检查XML标记之间的字符串长度。字符串的值始终为6,我想检查它是否为6。 我试着这样做:Java 检查XML标记中的字符串长度-regex,java,regex,xml,Java,Regex,Xml,我想使用正则表达式检查XML标记之间的字符串长度。字符串的值始终为6,我想检查它是否为6。 我试着这样做: <tag>(.+?){6,6}</tag> (.+?){6,6} 但事实总是如此,即使我改变了数字。 (?=^.{6}$)这个正则表达式也不工作,我得到了一个正则表达式不包含的错误。 如何检查标记之间字符串的长度 我不以这种方式验证xml,我只想检查断言。警告:您不应该以这种方式验证xml!正确处理可能会成为一项非常复杂的任务 相反,使用XML解析器,获取“ta
<tag>(.+?){6,6}</tag>
(.+?){6,6}
但事实总是如此,即使我改变了数字。
(?=^.{6}$)
这个正则表达式也不工作,我得到了一个正则表达式不包含的错误。
如何检查标记之间字符串的长度
我不以这种方式验证xml,我只想检查断言。警告:您不应该以这种方式验证xml!正确处理可能会成为一项非常复杂的任务 相反,使用XML解析器,获取“tag”元素的文本值,并检查其长度 但是如果您仍然希望这样做,下面的正则表达式将按照您描述的方式执行(但可能不是您想要的!) 请注意,此正则表达式仍然过于严格,因为它不允许以下完全有效的输入:
<tag >[A-Z]{6}</tag>
[A-Z]{6}
简单而冗长的方法是从>+1获取子字符串,然后它将抛出StringIndexOutOfBoundsException,如果是,则将是tagtext
首先以字符串形式读取该行,然后将其转换为字符数组,然后迭代该行!
如果每个<&>的计数为2,则从量化的子模式中获取子字符串。使用
{6}
或[^我不验证,我想通过这种方式检查断言。你应该将其添加到你的问题中。这会极大地改变整个情况。有人要求使用regex解决方案。
<tag>[^&<]{6}</tag>
<tag>[A-Z]{6}</tag>
<tag >[A-Z]{6}</tag>
List<String> list= new ArrayList<String>();
FileReader fr= new FileReader(path);
BufferedReader br= new BufferedReader(fr);
String str= null;
while((str=br.readLine())!=null)){
list.add(str);
}
//suppose you want to check 3rd line
int lbrack=0; rbrack=0;
String text= null;
String data= list.get(2);
char[] brack= data.toCharArray();
for(int i=0; i<brack.length;i++){
if(brack[i]=='<')
lbrack++;
if(brack[i]=='>')
rbrack++;
}
if(lbrack==2 && rbrack==2){
text= data.substr(data.indexOf(">")+1,data.indexOf("<"));
}
else {
System.out.println("this is root tag or some problem here");
}