Answers:
是的你可以。那应该工作。
.
=任何字符\.
=实际的点字符.?
= .{0,1}
=匹配任何字符0或1.*
= .{0,}
=匹配任何字符零次或多次.+
= .{1,}
=匹配任何字符一次或多次是的,这将起作用,但是请注意,.
除非在编译表达式时传递DOTALL标志,否则它将不匹配换行符:
Pattern pattern = Pattern.compile(".*123", Pattern.DOTALL);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.matches();
.
会换行。很高兴阅读您的回答,我需要使用它!
{.,\n,\r,\u2028,\u2029,\u0085}
来完全匹配任何字符(Unicode字符是.
在Java中不匹配的附加行终止字符),但仅{.,\n,\r}
适用于大多数文本文件。
[\s\S]
如果您无法使用DOTALL,@ TheodoreMurdock 是匹配任何字符的一种流行方法。
(?:.|\\v)*
,因为,JDK-6337993。
有很多复杂的正则表达式测试和开发工具,但是如果您只想使用Java中的简单测试工具,可以使用以下工具:
String[] tests = {
"AAA123",
"ABCDEFGH123",
"XXXX123",
"XYZ123ABC",
"123123",
"X123",
"123",
};
for (String test : tests) {
System.out.println(test + " " +test.matches(".+123"));
}
现在,您可以轻松添加新的测试用例并尝试新的模式。玩得开心探索正则表达式。
我看到的最常见的编码方式是使用字符类,其成员构成所有可能字符集的分区。
通常人们写为[\s\S]
(空格或无空格),但是[\w\W]
,[\d\D]
等一切都能解决。
.*
并且.+
用于除换行符以外的任何字符。
为了以防万一,您可能想添加换行,对于那些需要双重转义的语言,例如Java或C ++,以下表达式也可能适用:
[\\s\\S]*
[\\d\\D]*
[\\w\\W]*
零次或多次,或
[\\s\\S]+
[\\d\\D]+
[\\w\\W]+
一次或多次。
对于某些语言,例如C#,PHP,Ruby,PERL,Python,JavaScript,不需要双重转义:
[\s\S]*
[\d\D]*
[\w\W]*
[\s\S]+
[\d\D]+
[\w\W]+
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression{
public static void main(String[] args){
final String regex_1 = "[\\s\\S]*";
final String regex_2 = "[\\d\\D]*";
final String regex_3 = "[\\w\\W]*";
final String string = "AAA123\n\t"
+ "ABCDEFGH123\n\t"
+ "XXXX123\n\t";
final Pattern pattern_1 = Pattern.compile(regex_1);
final Pattern pattern_2 = Pattern.compile(regex_2);
final Pattern pattern_3 = Pattern.compile(regex_3);
final Matcher matcher_1 = pattern_1.matcher(string);
final Matcher matcher_2 = pattern_2.matcher(string);
final Matcher matcher_3 = pattern_3.matcher(string);
if (matcher_1.find()) {
System.out.println("Full Match for Expression 1: " + matcher_1.group(0));
}
if (matcher_2.find()) {
System.out.println("Full Match for Expression 2: " + matcher_2.group(0));
}
if (matcher_3.find()) {
System.out.println("Full Match for Expression 3: " + matcher_3.group(0));
}
}
}
Full Match for Expression 1: AAA123
ABCDEFGH123
XXXX123
Full Match for Expression 2: AAA123
ABCDEFGH123
XXXX123
Full Match for Expression 3: AAA123
ABCDEFGH123
XXXX123
如果您想探索该表达式,请在regex101.com的右上方面板中进行说明。如果需要,您还可以在此链接中观看,它如何与某些示例输入匹配。
jex.im可视化正则表达式:
(\W|\w)*
而不是两次逃避
示例问题的具体解决方案:-
尝试[A-Z]*123$
将匹配123
,AAA123
,ASDFRRF123
。如果您在123
使用前至少需要一个字符[A-Z]+123$
。
问题的一般解决方案(如何在正则表达式中匹配“任何字符”):
[\w|\W]{min_char_to_match,}
。[\S]{min_char_to_match,}
。[^]
应该匹配任何字符,包括换行符。[^
煤焦]
所有字符匹配除了那些在煤焦。如果CHARS为空,则匹配所有字符。
JavaScript示例:
/a[^]*Z/.test("abcxyz \0\r\n\t012789ABCXYZ") // Returns ‘true’.
试试正则表达式.{3,}
。这将匹配除换行以外的所有字符。
我的工作方式并非总是点代表任何字符。单行模式时例外。\p{all}
应该
String value = "|°¬<>!\"#$%&/()=?'\\¡¿/*-+_@[]^^{}";
String expression = "[a-zA-Z0-9\\p{all}]{0,50}";
if(value.matches(expression)){
System.out.println("true");
} else {
System.out.println("false");
}