2
A
回答
4
我會用積極的向前看符號爲每個單詞,像這樣的(你可以根據需要添加儘可能多的):
(?=.*?\bsun\b)(?=.*?\bshining\b).*
1
您將需要使用正則表達式,認爲這樣的每種排列:
\b(sun\b.+\bshining|shining\b.+\bsun)\b
這裏所說的邊界\b
用於僅匹配字sun
和shining
,並沒有像「晴天」這樣的子詞。
2
基本正則表達式不能很好地處理不同的單詞順序。有辦法做到這一點,但正則表達式變得醜陋,除了正則表達式大師之外對所有人都是難以理解的。我更喜歡在大多數情況下選擇自己的可讀性。
我的建議是使用一個簡單的or
變種,是這樣的:
sun.+shining|shining.+sun
與字邊界如果需要的話:
\bsun\b.+\bshining\b|\bshining\b.+\bsun\b
由於盧塞羅指出,這將變得笨拙隨着你搜索的單詞數量增加,在這種情況下,我會選擇多個正則表達式匹配解決方案:
def hasAllWords (string, words[]):
count = words[].length()
for each word in words[]:
if not string.match ("\b" + word + "\b"):
return false
return true
該僞代碼將對每個單詞執行檢查並確保它們全部出現。
+0
就像Gumbo的解決方案一樣,這會讓更多的單詞變得醜陋,並且由於貪婪的量詞而表現不佳。 – Lucero 2010-10-23 13:56:27
0
你使用兩個正則表達式。
if (($line =~ /\bsun\b.+\bshining\b/) ||
($line =~ /\bshining\b.+\bsun\b/)) {
# do whatever
}
有時你必須做什麼似乎是低科技。這個問題的其他答案會讓你用交替和前瞻等構建複雜的正則表達式,但有時候最好的方法是以最簡單的方式來完成,在這種情況下,就是使用兩種不同的正則表達式。
不用擔心執行速度。除非您將此解決方案與其他更復雜的單表達式解決方案進行對比,否則您不知道哪個更快。編寫緩慢的正則表達式非常容易。
相關問題
- 1. 正則表達式來查找以冒號開頭的單詞
- 2. JavaScript的正則表達式來查找單詞串
- 3. 正則表達式尋找單詞
- 4. 正則表達式來匹配單詞
- 5. 正則表達式來查找你知道字母但不是字母的字母順序的單詞嗎?
- 6. Python正則表達式查找單詞與其他詞分開
- 7. 查找所有單詞,而不使用正則表達式
- 8. 正則表達式來查找公式
- 9. 正則表達式順序
- 10. 是否有可能使用正則表達式來查找單詞序列?
- 11. Python的正則表達式查找單詞的文字
- 12. Python的正則表達式查找單詞
- 13. 查找括號內的單詞 - 正則表達式+ Ruby
- 14. 查找嚴格以$開頭的單詞,正則表達式C#
- 15. PHP的正則表達式查找單詞串
- 16. 正則表達式來查找郵編?
- 17. Java的正則表達式來查找2個單詞的短語
- 18. 查找單詞開始於正則表達式中的特定單詞
- 19. 蟒蛇正則表達式查找單詞
- 20. 正則表達式查找單詞包括「 - 」
- 21. 使用正則表達式查找單詞上下文
- 22. 正則表達式查找單詞裏大括號
- 23. 正則表達式查找單詞包含特定字符
- 24. Php使用正則表達式在文本中查找單詞
- 25. 正則表達式在PHP查找單詞
- 26. 使用正則表達式查找一組單詞
- 27. PHP查找不在正則表達式中的詞
- 28. Python - 使用正則表達式來查找帶有垃圾字符的單詞
- 29. 正則表達式來查找字母后面沒有的單詞
- 30. 正則表達式來查找包含連字符的單詞MS Office
哪種語言? – kennytm 2010-10-23 13:44:51