java pattern(javalist中@pattern不生效)
本文目录
- javalist中@pattern不生效
- java中关于Pattern的一个方法
- java正则pattern的正确用法怎么用
- java Pattern 怎么判断大于某一个数字数值
- java pattern 如何匹配用逗号分隔的很复杂的表达式
- java pattern 正则表达式 验证 用逗号隔开的序列(不要说substring)
- 想利用java里pattern功能处理对多个关键字的匹配查询
- java pattern 正则表达式中的 +和 *分别是什么意思
- java中pattern是什么意思
- 一个java小问题,Pattern类中的类方法(静态方法)compile(String regex
javalist中@pattern不生效
JSR303注释@pattern不起作用
时间:2013-09-30 13:40:55
标签: java regex
我在字段上使用JSR303注释@Pattern来检查仅包含空格的String。 如果只找到空格,则抛出一条消息,但@Pattern无**常工作
@Length(max = AlertC***tants.LENGTH_FOR_TWITTER_TEXTS, message = "{twitter.message.max}")
@Pattern(regexp ="^\\s*$", message = "{message.twitter.content.not.empty}")
private String twitterChannelContent = "";
我正在使用上面的@length工作正常。 请建议
2 个答案:
答案 0 :(得分:1)
有两种可能性:
要么你误解了“^”字符的功能,当它括在括号中时会执行“not”,但是当你编写它时,它表示字符串的开头。
或者你误解了Pattern注释的功能。它将验证字符串是否与给定模式匹配,如果不匹配,则使用错误消息。
无论哪种方式,目前你都说这个字符串应该只包含空格。
答案 1 :(得分:0)
来回留出空间:( | ^ \ s * \ S + \ s * $)
没有空格:( | ^ \ S + $)
疑难解答点: - 拒绝" WOW&#34
java中关于Pattern的一个方法
你的用法有问题,spilt()方法是用来分割字符串的,而你想要的结果应该是匹配字符串,匹配应该用find(),group(),如下:
public
static
void
main(String
args)
{
Pattern
p
=
Pattern.compile("\\w{3}");
String
matchedString
=
"qwedfg";
//
重新给出待匹配的字符序列
Matcher
m
=
p.matcher(matchedString);
String
a
=
p.split(matchedString);
while(m.find())
{
System.out.println(m.group());
}
}
输出结果为:
qwe
dfg
spilt()方法的试用实例:
public
static
void
main(String
args)
{
Pattern
p
=
Pattern.compile(",");
String
matchedString
=
"abc,def,asdf,aer,wtw,sfa";
//
重新给出待匹配的字符序列
String
a
=
p.split(matchedString);
System.out.println(a.length);
for(int
i=0;i《a.length;i++)
{
System.out.println(a);
}
}
输出结果为:
6
abc
def
asdf
aer
wtw
sfa
java正则pattern的正确用法怎么用
public
static
String
extractNumber(String
input){
StringBuilder
numberStr=new
StringBuilder();
//Pattern
p=Pattern.compile("\\d+");
//意思是不要在方法体内定义Pattern变量,直接像下面这样调用静态方法就行了
Matcher
m=Pattern.compile("\\d+").matcher(input);
while(m.find()){
numberStr.append(m.group());
}
return
numberStr.toString();
}
java Pattern 怎么判断大于某一个数字数值
方法一:利用正则表达式
public class Testone {
public static void main(String args){
String str="123456";
boolean result=str.matches("+");
if (result == true) {
System.out.println("该字符串是纯数字");}else{System.out.println("该字符串不是纯数字");}}}方法二:利用Pattern.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Testone {
public static void main(String args){
String str="123456";
Pattern pattern = Pattern.compile("{1,}");
Matcher matcher = pattern.matcher((CharSequence)str);
boolean result=matcher.matches();
System.out.println("该字符串是纯数字");}else{System.out.println("该字符串不是纯数字");}}}
java pattern 如何匹配用逗号分隔的很复杂的表达式
按照你的要求匹配aa:bb,cc,dd:e简化的Java正则表达式: (:?\\w+,?)+
我给你个Java程序的例子,你可以参考一下.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class A {
public static void main(String args) {
String s="aa:bb,cc,dd:e";
String regex="(:?\\w+,?)+";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
if(m.matches()){
System.out.println(m.group());
}
}
}
运行结果:
aa:bb,cc,dd:e
java pattern 正则表达式 验证 用逗号隔开的序列(不要说substring)
\\w+(,\\w+)* 这个是最合理的。
如果有多层次序列,建议先识别最外层序列。
然后提取内容,依次识别内层序列。
不一定要一个正则搞定,可以多个正则结合循环。
public boolean matcher(String input) {
for (String str1 : input.split(":")) {
for (String str2 : str1.split(";")) {
for (String str3 : str2.split(",") {
if (!str3.matchers("\\w+")) {
return false;
}
}
}
}
return true;
}
想利用java里pattern功能处理对多个关键字的匹配查询
Pattern pattern = Pattern.compile("切");
Matcher matcher = pattern.matcher(txt);
Matcher matcher2 = Pattern.compile("蒸").matcher(txt);
Matcher matcher3 = Pattern.compile("煮").matcher(txt);
Matcher matcher4 = Pattern.compile("炖").matcher(txt);
Matcher matcher5 = Pattern.compile("炸").matcher(txt);
boolean a = false;
boolean b = false;
boolean c = false;
boolean d = false;
boolean e = false;
while ((a = matcher.find())|| (b = matcher2.find())||(c = matcher3.find())||( d = matcher4.find())||(e = matcher5.find())) {
String msg ="";
if(a){
msg = ":" + matcher.group() + ":";
}else if(b){
msg = ":" + matcher2.group() + ":";
}else if(c){
msg = ":" + matcher3.group() + ":";
}else if(d){
msg = ":" + matcher4.group() + ":";
}else if(e){
msg = ":" + matcher5.group() + ":";
}
System.out.println(msg);
}
只不过这样比较麻烦,你可以自己精炼下,我想知道,你提取关键字是不是只是想确定是否包含,如果是你可以不用这个方法
java pattern 正则表达式中的 +和 *分别是什么意思
+号,表示匹配次数,n》=1。
*号,表示匹配次数,n》=0。
?号,本身表示匹配次数,n=0或n=1。
?号,紧跟匹配次数后面表述以非贪婪模式匹配,即满足条件的情况下,取匹配次数最少的。
例如:
\d+匹配"12345" ,第一次会匹配全部,下面就匹配不到了。
\d+?匹配"12345",第一次则只匹配1,第二次匹配2,匹配5次之后就匹配不到了。
java中pattern是什么意思
java 中pattern为正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。例子如下:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句
boolean b = Pattern.matches("a*b", "aaaaab");
一个java小问题,Pattern类中的类方法(静态方法)compile(String regex
编译标志
效果
Pattern.CANON_EQ 当且仅当两个字符的"正规分解(canonical decomposition)"都完全相同的情况下,才认定匹配。比如用了这个标志之后,表达式"a/u030A"会匹配"?"。默认情况下,不考虑"规范相等性(canonical equivalence)"。
Pattern.CASE_INSENSITIVE
(?i) 默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。这个标志能让表达式忽略大小写进行匹配。要想对Unicode字符进行大小不明感的匹配,只要将UNICODE_CASE与这个标志合起来就行了。
Pattern.COMMENTS
(?x) 在这种模式下,匹配时会忽略(正则表达式里的)空格字符(注:不是指表达式里的"//s",而是指表达式里的空格,tab,回车之类)。注释从#开始,一直到这行结束。可以通过嵌入式的标志来启用Unix行模式。
Pattern.DOTALL
(?s) 在这种模式下,表达式’.’可以匹配任意字符,包括表示一行的结束符。默认情况下,表达式’.’不匹配行的结束符。
Pattern.MULTILINE
(?m) 在这种模式下,’^’和’$’分别匹配一行的开始和结束。此外,’^’仍然匹配字符串的开始,’$’也匹配字符串的结束。默认情况下,这两个表达式仅仅匹配字符串的开始和结束。
Pattern.UNICODE_CASE
(?u) 在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配。默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。
Pattern.UNIX_LINES
(?d) 在这个模式下,只有’/n’才被认作一行的中止,并且与’.’,’^’,以及’$’进行匹配。
更多文章:
python list排序sort降序(python怎么使用sort)
2026年4月12日 04:40
screen capture(screen capture是winds自带的吗)
2026年4月12日 04:20
matlab傅里叶变换图像增强(matlab 调用图像放大命令)
2026年4月12日 03:40
java pattern(javalist中@pattern不生效)
2026年4月12日 03:00
latin1编码转换为utf8(用perl将含有波斯文的latin1的文件转成utf8的文件,求大神帮助)
2026年4月12日 02:20





