java正则表达式元字符(.)和普通点?

w1e3prcc  于 2021-06-29  发布在  Java
关注(0)|答案(8)|浏览(380)

在javaregex中,如何找出 . (点)我们在任何句子中使用的元字符和正常点。如何处理这种情况下,其他元字符太喜欢( * , + , \d ,...)

u3r8eeie

u3r8eeie1#

下面是可以直接复制粘贴的代码:

String imageName = "picture1.jpg";
String [] imageNameArray = imageName.split("\\.");
for(int i =0; i< imageNameArray.length ; i++)
{
   system.out.println(imageNameArray[i]);
}

在这种情况下,如果在“.”之前或之后错误地留有空格呢?最好的做法是也考虑这些空间。

String imageName = "picture1  . jpg";
String [] imageNameArray = imageName.split("\\s*.\\s*");
    for(int i =0; i< imageNameArray.length ; i++)
    {
       system.out.println(imageNameArray[i]);
    }

这里,\s*考虑空格,只提供所需的拆分字符串。

nhaq1z21

nhaq1z212#

用反斜杠转义特殊字符。 \. , \* , \+ , \\d ,等等。如果您不确定,您可以转义任何非字母字符,无论它是否特殊。有关更多信息,请参阅javadoc for java.util.regex.pattern。

31moq8wy

31moq8wy3#

我在jgrasp中做了一些基本的数组,发现使用char[]]数组的访问器方法可以使用('.')放置单个点。

6ovsh4lw

6ovsh4lw4#

如果您想结束检查您的句子是否以“.”结束,那么您必须在您的模式末尾添加[.]$。

vq8itlhq

vq8itlhq5#

perl风格的正则表达式(java正则表达式引擎或多或少都基于此)将以下字符视为特殊字符: .^$|*+?()[{\ 在字符类之外有特殊意义, ]^-\ 在字符类中有特殊的含义( [...] ).
因此,您需要根据上下文(或者,在字符类的情况下,将它们放置在不能被误解的位置)对这些符号进行转义。
不必要地转义其他字符可能会起作用,但是一些正则表达式引擎会将其视为语法错误 \_ 将在.net中导致错误。
例如,其他一些会导致错误的结果 \< 被解释为文字 < 在perl中,但是在 egrep 意思是“词界”。
所以写吧 -?\d+\.\d+\$ 匹配 1.50$ , -2.00$ 等等 [(){}[\]] 对于匹配所有类型方括号/大括号/圆括号的字符类。
如果需要将用户输入字符串转换为regex安全格式,请使用 java.util.regex.Pattern.quote .
进一步阅读:jan goyvaert的博客regexguru关于逃逸元字符

5rgfhyps

5rgfhyps6#

如果希望正则表达式中具有特殊含义的点或其他字符是普通字符,则必须使用反斜杠对其进行转义。因为java中的正则表达式是普通的java字符串,所以需要对反斜杠本身进行转义,所以需要两个反斜杠。 \\.

dzjeubhm

dzjeubhm7#

我想匹配一个以“.*”结尾的字符串,为此,我必须使用以下命令:

"^.*\\.\\*$"

如果你仔细想想就有点傻了:这就是它的意思。在字符串的开头可以有任何字符零次或多次,后跟一个点“.”,在字符串的末尾后跟一个星号(*)。
我希望这对某人有用。谢谢你给费边的反斜杠。

mum43rcc

mum43rcc8#

其他成员提出的解决方案对我不起作用。
但我发现:
在java regexp write中转义一个点 [.]

相关问题