2017-05-26 30 views
0

我需要幫助建立一個正則表達式匹配什麼是文字和數字的正則表達式彼此之間沒有空格

words2005 
more words2005 
more words 2005here 

但不

words 2005 
more words 2005 
more words 2005 here 

基本上我找實例,人們沒有在他們的文字和數字之間放置空格。

例如,我正在通過文本搜索諸如I was born in 1990 near Hong Kong之類的短語。有時候人們輸入錯誤,最後輸入爲I was born in 1990near Hong KongI was born in1990 near Hong Kong。我只想找到這些實例,以便我可以修復它們。

+0

只是不要把正則表達式中的空格,並且它不會匹配空格。 – Barmar

+0

所以比賽應該有一些字母和一些數字,像這樣:https://regex101.com/r/0Xshek/1? – degant

+1

你應該增加一些你正在尋找的解釋。也許定義一些規則幷包含更多的輸入和輸出示例。基於我有限的理解,試試這個:https://regex101.com/r/0Xshek/2/ – degant

回答

1

只是匹配一個字母后面跟着一個數字或一個數字後面有一個字母:

[a-zA-Z]\d|\d[a-zA-Z] 
+0

你的簡單而正確的答案意識到我的測試條件是錯誤的,你是否也可以匹配「更多的單詞2005這裏」 - 就是這樣。謝謝! – vinhboy

+0

我已經更新了答案。它仍然非常簡單,你只需匹配任一條件即可。 – Barmar

+0

如果您的「單詞」不僅僅是A-Z,您可以使用它來查找所有在*之前/之後沒有*空格*的數字:'[^] \ d + | \ d + [^]'。 –

1

要獲得含有字母和數字的話,你可以使用:

[A-Za-z]+\d+|\d+[A-Za-z]+ 

Regex101 Demo

// Will match completely: 
words2005 
1990near 

// Will only match parts of 
9gag9 
f4f 

替代:

如果需求是匹配包含ATLEAST一個字母和ATLEAST一個數字的字母數字字符串,那麼這將是一個更好的正則表達式:

(?:[A-Za-z]+\d+|\d+[A-Za-z]+)[A-Za-z\d]* 

Regex101 Demo

// Completely matches 
9gag9 
f4f 
text929number123 
相關問題