簡體   English   中英

兩個字符串的正則表達式格式

[英]regex format for two strings

我想要一個正則表達式,它將提取“ happy and good”(非貪婪且不區分大小寫)。

@a = [" I am very HAppy!!", "sad today..", "happy. to hear about this..", "the day is good", "sad one", "sad story"]

看起來這只用一個詞就可以了:

@z = @a.join.scan(/\bhappy\b/i)

但是,當我添加好時,它不能按我預期的那樣工作。

@z = @a.join.scan(/\bhappy|good\b/i) 

期望(快樂2倍,好1倍):

@z.size => 3

結果給了我:

@z.size => 2

你應該加括號的左右交替,使得\\b旨意適用於任何happygood的單位:

\b(happy|good)\b

然后,您可能想掃描@a數組的每個元素而不是@a.join因此需要mapflatten

@a.map { |s| s.scan(/\b(happy|good)\b/i) }.flatten
# ["HAppy", "happy", "good"]

您也可以使用非捕獲組:

\b(?:happy|good)\b

但在這種情況下不會有任何區別。

我認為您的意思是說既快樂,但不好。 這是因為您查看單詞邊界,並且當您連接字符串時,它會變成商品。

刪除單詞邊界條件,它應符合預期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM