Java 如何找到与正则表达式匹配的字符串
假设我有这个java字符串。注意有两个Java 如何找到与正则表达式匹配的字符串,java,regex,Java,Regex,假设我有这个java字符串。注意有两个对,一个只包含数字,另一个包含数字和字符串。 在Java中,如何知道字符串是否只包含数字? 我这么做了,但没用 String keyPattern = "^<id>[0-9]</id>$"; boolean hasKey = str.matches(keyPattern); <start><a></a><b></b><c>addf123</
对,一个只包含数字,另一个包含数字和字符串。
在Java中,如何知道字符串是否只包含数字?
我这么做了,但没用
String keyPattern = "^<id>[0-9]</id>$";
boolean hasKey = str.matches(keyPattern);
<start><a></a><b></b><c>addf123</c><d><d><c>1234</c><foo></foo><bar></bar></start>
String keyptern=“^[0-9]$”;
布尔hasKey=str.matches(keyPattern);
地址:F1231234
您非常接近,您需要添加一个“量词”。在您的例子中,是一个“+”
String keyPattern = "^<id>[0-9]+</id>$";
String keyptern=“^[0-9]+$”;
链接到
编辑:但是,您也只能成功地匹配一个字符串,其中字符串中的唯一值是“123”
,而没有其他文本,因为您有^和$anchors
因此,如果您删除这些,您有:
String keyPattern = ".*<id>[0-9]+</id>.*";
String keyptern=“.[0-9]+.*”;
它将匹配任何只包含数字的字符串。。。标记任何地方
我怀疑您希望获取所有仅限数字的id,在这种情况下,matches(…)方法不是您想要使用的方法。。。。但这是另一个问题。如果要匹配一个可以包含任意大小数字的字符串,则需要在[0-9]后面添加一个+,如下所示:
[0-9]+
按照现在的方式,它只能匹配一个位数
[0-9]
将匹配一个单个数字
[0-9]?
将匹配0或1位数字
[0-9]*
将匹配0或多个数字
[0-9]+
将匹配1位或多位数字
您还可以将某个数字的
[0-9]
替换为\d
,您有几个错误
String keyPattern = ".*<c>[0-9]+</c>.*";
boolean hasKey = str.matches(keyPattern);
String keyptern=“.[0-9]+.*”;
布尔hasKey=str.matches(keyPattern);
不要使用正则表达式解析XML。使用真正的XML API,如SAX或DOM——或者,如果适用,使用更高级的API,使用起来不那么繁琐。例如,如果您使用XML来序列化对象,您应该查看
试图用正则表达式实现这一点只会自找麻烦。参见相关问题及其答案:
一般来说,您应该使用XML解析器正确解析数据。使用正则表达式解析不是正确的做法。请不要使用正则表达式解析XML。请参阅此keyPattern在使用str.matches时将与字符串不匹配