java正则表达式中的 . 表示匹配任意字符,为什么我这个不对呢?

Python09

java正则表达式中的 . 表示匹配任意字符,为什么我这个不对呢?,第1张

首先,点前面不能有转义符\ ,如果有转义符点就只能匹配小数点了。

其次,点不能写在中括号内,如果写在中括号内,依然只能匹配小数点。

所以,你应该把转义符和中括号去掉,点就能匹配任意字符了。

完整的Java程序如下:

package day01

public class Test001 {

 public static void main(String[] args) {

  String regex="."

  String str="w"

  System.out.println(str.matches(regex))

 }

}

运行结果:

true

一个正则表达式就是由普通字符(例如大小写字母)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式"java"中没有包含任何元字符,它可以匹配"java"和"javascript"等字符串,但是不能匹配"Java"。

正则表达式不仅能进行字符串的匹配,还能进行字符串的提取、替换。

示例代码:

String regEx = ".+/(.+)$"

String str = "D:/java/test.txt"

Pattern p = Pattern.compile(regEx)

Matcher m = p.matcher(str)

if (!m.find()){

System.out.println("文件路径格式错误!")

return

}

System.out.println(m.group(1))

运行结果:test.txt

正则表达式“.+/(.+)$”的含义就是:被匹配的字符串以任意字符序列开始,后边紧跟着字符“/”,最后以任意字符序列结尾,“()”代表分组操作,这里就是把文件名做为分组,匹配完毕就可以通过Matcher 类的group方法取到所定义的分组了。需要注意的这里的分组的索引值是从1开始的,所以取第一个分组的方法是m.group(1)而不是m.group(0)。

String  str = "<sup>任意字符</sup> " 

            Pattern p = Pattern.compile("<sup>([^<]*)</sup>") 

            Matcher m = p.matcher(str) 

            while(m.find()) { 

                System.out.println(m.group(1))

            }

若不能解决,可追问,我继续帮你