好吧,我會盡我所能來回答你的問題,並在不假設或猜測的情況下徹底解釋!
這個答案建立在達拉斯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類的文檔。
(請接受這個作爲一個答案,如果它的工作原理/幫助和社區請不要帶走我的反應力量!我看了反饋回答,不建議!)
乾杯
有大量的有關整個互聯網正則表達式的信息。例如,Oracle提供了[正則表達式課程](https://docs.oracle.com/javase/tutorial/essential/regex/)。如果你真的想了解它們是如何工作的以及如何編寫它們,你應該閱讀上面鏈接的教程。 –
編程是關於清晰度。由於第2點,點3,4和5是多餘的和不相關的。'[a-zA-Z] {32,}','。* L. *' – Bohemian