java中string.matcher(regex)如何指定匹配模式, 即要实现和js中的/i/m/g等等的功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中string.matcher(regex)如何指定匹配模式, 即要实现和js中的/i/m/g等等的功能相关的知识,希望对你有一定的参考价值。

举例:Pattern pattern=Pattern.compile("[a-z]1,10",Pattern.CASE_INSENSITIVE);
----后一个参数指定了 匹配时忽略大小写.
用string.matcher(regex)这个方法 可不可以直接达到这样的效果?怎么达到

应该是想实现不管大小写的a-z和1-9的组合吧,String regex="[a-zA-Z][0-9]"即可,上面的只能识别两个字符,如果想要多个字符匹配,那么加在后面加*表示零次或者多次,加+表示一次或者多次,像上面的情况,1.如果要匹配“adfj123”就用[a-zA-Z]+[0-9]+即可;2.如果字母出现一次,数字出现很多,那么就用[a-zA-Z]([0-9])+,如“a123”;3.如果字母出现一次,数字出现0次或者多次,就用
[a-zA-Z]([0-9])*即可;4.如果字母出现0次或者多次,数字出现一次就用[a-zA-Z]*([0-9]),这些是最常用的,楼主可以看看api在java.util.regex.pattern
参考技术A 直接写在正则里,
比如:
(?i)[a-z]
等效于
[a-zA-Z]

[a-z](?i)[a-z]
等效于
[a-z][a-zA-Z]

参考:http://beinet.cn/Blog/BlogShow.aspx?id=8fe6311d-ea7b-4e81-9fa1-465b593c82c1
第13 正则表达式选项本回答被提问者采纳
参考技术B String没有matcher方法,只有matches方法,看下String.java的源代码,如下:
public boolean matches(String regex)
return Pattern.matches(regex, this);

再看下Pattern.java,如下:
public static final int CASE_INSENSITIVE = 0x02;
public static Pattern compile(String regex)
return new Pattern(regex, 0);

public static Pattern compile(String regex, int flags)
return new Pattern(regex, flags);

public static boolean matches(String regex, CharSequence input)
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
return m.matches();

说明String.matches是大小写敏感的

以上是关于java中string.matcher(regex)如何指定匹配模式, 即要实现和js中的/i/m/g等等的功能的主要内容,如果未能解决你的问题,请参考以下文章

Java中Regex替换的自定义函数[关闭]

Java:String.replace(regex, string) 从 XML 中删除内容

使用 Regex 模式替换文本块(在 java 中)

在 Java 中使用 RegEx 解析 CSV 输入

Java 和 .NET 之间的 RegEx“匹配”不同

带有 UCanAccess 的 java.util.regex.PatternSyntaxException