这是我第一次用Java或任何语言实现正则表达式。我试图创建两个不同的正则表达式。第一个正则表达式需要确保:
第二个正则表达式需要确保:
如果有人能够解释这两个过程,那将非常感激。
答案 0 :(得分:1)
好的,我会尽力回答你的问题,并在不假设或猜测的情况下彻底解释!
这个答案建立在达拉斯S回答的问题之上(或者至少有一些相似之处)。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class App {
public static void main(String[] args) throws Exception {
String s = "ThisIsATestStringThatIsBeingUsedInThisExample";
System.out.println("Test String Length: " + s.length());
Pattern p = Pattern.compile("^[A-Za-z]{32,}$");
Matcher m = p.matcher(s);
System.out.println("Found = " + (m.find() ? "True" : "Flase"));
if (m.find()) {
String str = s.substring(m.start(), m.end());
System.out.println("Result = " + str);
}
}
}
更多地解释正则表达式以及它与您问题的第一部分的关系: 根据您的要求,
该字符串仅包含英文字母
和
字符串不包含数字
和
该字符串不包含任何特殊字符(!,@,#,$,%,^,&,*,(,), - ,_,+,=,。,,,>,< ,?,`,〜,/,|,\,{,},[,])
和
字符串不包含任何空格或制表符
这被分为正则表达式中包含' [A-Za-z]' 代码的部分。这意味着此正则表达式可以接受任何大写或小写字母字符的字符类。
然后,对于您指定的部分:
字符串是32个或更多字符
这是通过' {32,}' 的代码部分来完成的。这告诉您查找需要32或更多的匹配项(因此逗号后面没有后续数字) )人物。
注意,正则表达式中的' ^' 符号会锚定字符串开头的匹配开始。此外,' $' 会在字符串末尾锚定匹配结束。
关于你问题的第2部分,我会简单地避免使用正则表达式,并按照Dallas S的建议,使用contains()调用来寻找' L'或者' R'字符。
查看here以获取有关java Pattern类的更多文档。 查看here以获取有关java Matcher类的更多文档。
(请接受此作为答案,如果它有效/帮助和社区请不要带走我的回复权力!我阅读反馈回答,不建议!)
干杯
答案 1 :(得分:0)
您可以使用正则表达式/[a-z]{32,}/i
作为第一个问题。这将设置ignoreCase标志,允许a-z范围内的字符并允许32或更多。使用java的方式使用它看起来像:
myString.matches("(?i)[a-z]{32,}")
对于第二个,您可以使用.contains方法。
myString.contains("L") || myString.contains("R")
这两个表达式都会返回一个布尔值。