在Java正則表達式中,如何找出.
(點)元字符與我們在任何句子中使用的正常點之間的區別。 (*
,+
,/d
,...)Java RegEx元字符(。)和普通點?
回答
如果你想點或其他字符在正則表達式特殊的含義是一個正常的字符,你必須用一個反斜槓逃脫它。由於Java中的正則表達式是普通的Java字符串,因此您需要自行轉義反斜槓,因此您需要使用兩個反斜槓,例如\\.
如何處理其他元字符的這種情況,例如使用反斜槓來轉義特殊字符。 \.
,\*
,\+
,\\d
等等。如果你不確定,你可能會轉義任何非字母字符,不管它是否特殊。有關更多信息,請參閱the javadoc for java.util.regex.Pattern。
不必要地轉義非特殊字符可能適用於某些語言,但可能會在其他語言中失敗,因此最好不要養成這種習慣。 – 2010-09-09 08:47:07
這個問題特別是關於Java,而http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#bs表示「反斜槓可能會在非無論該字符是否是非轉義構造的一部分,都是字母字符。「 – 2015-07-10 09:11:54
Perl樣式的正則表達式(在Java正則表達式引擎或多或少基於)治療下列字符爲特殊字符:
.^$|*+?()[{\
有特殊意義字符類之外,
]^-\
在字符類別([...]
)的內部具有特殊含義。
所以,你需要逃生者(只有那些)根據上下文符號(或者,在字符類的情況下,將它們放置在位置,他們不能被誤解)。
毋逃逸其它字符都可以工作,但一些正則表達式引擎將其視爲語法錯誤,例如\_
會導致.NET錯誤。
有些人會導致錯誤的結果,例如\<
被解釋爲在Perl文字<
,但在egrep
它的意思是「單詞邊界」。
所以寫-?\d+\.\d+\$
匹配1.50$
,-2.00$
等,併爲[(){}[\]]
字符類匹配各種支架/支架/括號。
如果需要用戶輸入的字符串轉換成正則表達式的安全形式,使用java.util.regex.Pattern.quote
。
延伸閱讀:Jan Goyvaert's blog RegexGuru on escaping metacharacters
我想匹配結尾的字符串 爲此,我不得不使用下面的「*」:
"^.*\\.\\*$"
,如果你認爲它有點兒傻: D 繼承人意味着什麼。在字符串的開始處,可以有任何字符零次或多次,後跟一個點「。」。然後在字符串的末尾加上星號(*)。
我希望這可以派上用場。謝謝Fabian的反斜槓。
其他成員提出的解決方案對我無效。
但是我發現這一點:
逃脫的Java正則表達式點寫[.]
同樣,'\\。'沒有爲我工作: ''.'抱怨說'''不需要轉義,''。''使它認爲它是'\',而不是'.', '\\\。'和建設者拋出一個錯誤, '[。]'是唯一有效的工作。 – mithunc 2018-03-07 01:17:39
這裏是代碼,你可以直接複製粘貼:
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 *是有考慮的空間,讓你只需要分裂字符串。
- 1. 普通字符串
- 2. 取代普通字符特殊字符
- 3. 關於mb字符串和PHP中的普通字符串
- 4. 單獨的html編碼字符串和普通字符串
- 5. 什麼是普通香草JavaBeans和普通香草Java類?
- 6. 對具有普通字符串元素和「類似數字」的字符串元素的數組進行排序
- 7. RegEx字符匹配
- 8. Java Regex元字符在分割時返回額外空間
- 9. 用於匹配+ n字符的Java RegEx
- 10. 在RegEx Java中查找子字符串
- 11. Java SSL套接字和普通套接字
- 12. 使用REGEX通過拆分字符串
- 13. 普通的(數字/數字)
- 14. 解析URL編碼爲普通字符串在java中
- 15. 將拉丁字符轉換爲Java中的普通文本
- 16. RegEx與街道前綴和通配符
- 17. Cant風格Bootstrap和普通元素
- 18. 不能JSON字符串轉換爲普通字符串數組中的Java
- 19. 斯普利特用java字符串
- 20. 如何獲取普通的'globe'Unicode字符
- 21. 搜索軟體徵與普通字符
- 22. 轉換ASCII字符普通的文本,
- 23. 將dbus.String轉換爲普通字符串
- 24. 字符串轉換爲普通文本
- 25. 轉換普通字符串JSON
- 26. REGEX 8個字符
- 27. Java REGEX:匹配註釋和不匹配特定字符
- 28. Java - 與MD5字符串檢查和REGEX錯誤
- 29. Java:我如何使用RegEx解析和驗證字符串?
- 30. 如何使用零字符RegEx檢查Java中的字符串?
此修補程序也適用於bash – krivar 2014-08-13 11:15:56
請注意是否要轉義反斜槓取決於您如何提供正則表達式。如果硬編碼,則需要使用:「\\」。 ,如果從原始來源(例如文本文件)讀取,則只使用一個反斜槓:\。 – Paul 2016-04-08 14:21:06