在javaregex中,如何找出 . (点)我们在任何句子中使用的元字符和正常点。如何处理这种情况下,其他元字符太喜欢( * , + , \d ,...)
.
*
+
\d
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*考虑空格,只提供所需的拆分字符串。
nhaq1z212#
用反斜杠转义特殊字符。 \. , \* , \+ , \\d ,等等。如果您不确定,您可以转义任何非字母字符,无论它是否特殊。有关更多信息,请参阅javadoc for java.util.regex.pattern。
\.
\*
\+
\\d
31moq8wy3#
我在jgrasp中做了一些基本的数组,发现使用char[]]数组的访问器方法可以使用('.')放置单个点。
6ovsh4lw4#
如果您想结束检查您的句子是否以“.”结束,那么您必须在您的模式末尾添加[.]$。
vq8itlhq5#
perl风格的正则表达式(java正则表达式引擎或多或少都基于此)将以下字符视为特殊字符: .^$|*+?()[{\ 在字符类之外有特殊意义, ]^-\ 在字符类中有特殊的含义( [...] ).因此,您需要根据上下文(或者,在字符类的情况下,将它们放置在不能被误解的位置)对这些符号进行转义。不必要地转义其他字符可能会起作用,但是一些正则表达式引擎会将其视为语法错误 \_ 将在.net中导致错误。例如,其他一些会导致错误的结果 \< 被解释为文字 < 在perl中,但是在 egrep 意思是“词界”。所以写吧 -?\d+\.\d+\$ 匹配 1.50$ , -2.00$ 等等 [(){}[\]] 对于匹配所有类型方括号/大括号/圆括号的字符类。如果需要将用户输入字符串转换为regex安全格式,请使用 java.util.regex.Pattern.quote .进一步阅读:jan goyvaert的博客regexguru关于逃逸元字符
.^$|*+?()[{\
]^-\
[...]
\_
\<
<
egrep
-?\d+\.\d+\$
1.50$
-2.00$
[(){}[\]]
java.util.regex.Pattern.quote
5rgfhyps6#
如果希望正则表达式中具有特殊含义的点或其他字符是普通字符,则必须使用反斜杠对其进行转义。因为java中的正则表达式是普通的java字符串,所以需要对反斜杠本身进行转义,所以需要两个反斜杠。 \\.
\\.
dzjeubhm7#
我想匹配一个以“.*”结尾的字符串,为此,我必须使用以下命令:
"^.*\\.\\*$"
如果你仔细想想就有点傻了:这就是它的意思。在字符串的开头可以有任何字符零次或多次,后跟一个点“.”,在字符串的末尾后跟一个星号(*)。我希望这对某人有用。谢谢你给费边的反斜杠。
mum43rcc8#
其他成员提出的解决方案对我不起作用。但我发现:在java regexp write中转义一个点 [.]
[.]
8条答案
按热度按时间u3r8eeie1#
下面是可以直接复制粘贴的代码:
在这种情况下,如果在“.”之前或之后错误地留有空格呢?最好的做法是也考虑这些空间。
这里,\s*考虑空格,只提供所需的拆分字符串。
nhaq1z212#
用反斜杠转义特殊字符。
\.
,\*
,\+
,\\d
,等等。如果您不确定,您可以转义任何非字母字符,无论它是否特殊。有关更多信息,请参阅javadoc for java.util.regex.pattern。31moq8wy3#
我在jgrasp中做了一些基本的数组,发现使用char[]]数组的访问器方法可以使用('.')放置单个点。
6ovsh4lw4#
如果您想结束检查您的句子是否以“.”结束,那么您必须在您的模式末尾添加[.]$。
vq8itlhq5#
perl风格的正则表达式(java正则表达式引擎或多或少都基于此)将以下字符视为特殊字符:
.^$|*+?()[{\
在字符类之外有特殊意义,]^-\
在字符类中有特殊的含义([...]
).因此,您需要根据上下文(或者,在字符类的情况下,将它们放置在不能被误解的位置)对这些符号进行转义。
不必要地转义其他字符可能会起作用,但是一些正则表达式引擎会将其视为语法错误
\_
将在.net中导致错误。例如,其他一些会导致错误的结果
\<
被解释为文字<
在perl中,但是在egrep
意思是“词界”。所以写吧
-?\d+\.\d+\$
匹配1.50$
,-2.00$
等等[(){}[\]]
对于匹配所有类型方括号/大括号/圆括号的字符类。如果需要将用户输入字符串转换为regex安全格式,请使用
java.util.regex.Pattern.quote
.进一步阅读:jan goyvaert的博客regexguru关于逃逸元字符
5rgfhyps6#
如果希望正则表达式中具有特殊含义的点或其他字符是普通字符,则必须使用反斜杠对其进行转义。因为java中的正则表达式是普通的java字符串,所以需要对反斜杠本身进行转义,所以需要两个反斜杠。
\\.
dzjeubhm7#
我想匹配一个以“.*”结尾的字符串,为此,我必须使用以下命令:
如果你仔细想想就有点傻了:这就是它的意思。在字符串的开头可以有任何字符零次或多次,后跟一个点“.”,在字符串的末尾后跟一个星号(*)。
我希望这对某人有用。谢谢你给费边的反斜杠。
mum43rcc8#
其他成员提出的解决方案对我不起作用。
但我发现:
在java regexp write中转义一个点
[.]