[英]Regex to validate words do not contain numbers or special characters
我正在開發一個在Android上運行的Java應用程序。 我正在嘗試選擇所有不包含任何嵌入式數字或符號的單詞。
我想出的最好的是:
\b[a-zA-Z]+[a-zA-Z]*+\b
測試數據:
this is a test , an0ther gr8 WW##ee one, w1n 1test test1 end
結果是選擇了以下內容: this, is, a, test, WW##ee, one, end
我需要從結果中刪除WW##ee
。
您不應該使用單詞邊界元字符\\b
因為它與WW
后面WW
#
字符的位置相匹配。 此位置本身就是單詞邊界。 因此,您應該采用另一種方式:
(?<![\S&&[^,]])[a-zA-Z]+(?![\S&&[^,]])
使用Java的regex的字符類交集功能,您可以定義允許在單詞字符之后或之前出現的標點符號。 這是一個逗號,
。
您可以使用“向后看”和“向前看”來檢查是否沒有#
。
\b(?<!\#)[a-zA-Z]+(?!\#)\b
隨着我獲得更多幫助,我的解決方案有所發展。 因此,這是我目前最好的解決方案,但仍然有點不足。 我無法在拒絕“ -this-”的同時接受“原樣”,而在拒絕“ / slash /”的同時接受“和/或”的類似情況。 同樣為了簡單起見,我使輸入數據每行一個字。
^(?:[\\ p {P} \\ p {S}]) ?((?:[\\ p {L} \\ p {Pd}'])+)(?:[\\ p {P} \\ p { S}]) $
原樣被選擇為有效
-這是有效的,但我希望不是
和/或無效,但我希望它將被選中
/ slash /選擇“ slash”有效
(測試)“測試”被選為有效
[測試]“測試”被選為有效
<test>“測試”被選擇為有效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.