![](/img/trans.png)
[英]Using regex or Ruby functions to select elements after a certain string
[英]Select a string in regex with ruby
我必須清理傳入參數的字符串,並刪除所有小寫字母和所有特殊字符,除了:
所以我在參數中傳遞了這個字符串:
aA azee + B => C=
我需要清理這個字符串才能得到這個結果:
A + B => C
我願意
string.gsub(/[^[:upper:][+|^ ]]/, "")
輸出: "A + BC"
我不知道如何在 ruby 中選擇帶有正則表達式的=>
(以及<=>
)字符串)
我知道,如果我將 string.gsub(/[^[:upper:][+|^ =>
]]/, "") 添加到我的正則表達式中,則傳入參數的字符串中的最后一個=
也將被選中
您可以嘗試另一種方法:匹配您想要保留的所有內容,然后加入結果。
您可以使用此正則表達式來匹配您想要保留的所有內容:
[A-Z\d+| ^]|<?=>
正如你所看到的,這只是一個 using |
和[]
創建要保留的字符串列表:大寫、數字、+、|、空格、^、=> 和 <=>。
示例:
"aA azee + B => C=".scan(/[A-Z\d+| ^]|<?=>/).join()
輸出:
"A + B => C"
請注意,“A”和“+”之間有 2 個連續的空格。 如果你不想要,你可以調用String#squeeze
。
(<?=>)|[^[:upper:]+|^ ]
(<?=>)
<=>
或=>
捕獲到捕獲組 1[^[:upper:]+|^ ]
匹配任何不是大寫字母(與[AZ]
相同)或+
字符, |
, ^
或空格p "aA azee + B => C=".gsub(/(<?=>)|[^[:upper:]+|^ ]/, '\1')
結果: A + B => C
r = /[a-z\s[:punct:]&&[^+ |^]]/
"The cat, 'Boots', had 9+5=4 ^lIVEs^ leF|t.".gsub(r,'')
#=> "T B 9+54 ^IVE^ F|"
正則表達式為:“匹配不是字符'+'
、 ' '
、 '|'
小寫字母、空格和標點符號和'^'
. &&
在字符類中是集合交集運算符。這里它將匹配az\\s[:punct:]
的字符集與匹配[^+ |^]
的字符集相交。(請注意,這包括空格除了空格。)有關更多信息,請在Regexp 中搜索“字符類也支持 && 運算符”。
我沒有包括'=>'
和'<=>'
作為那些,不像'+'
, ' '
, '|'
和'^'
是多字符串,因此需要一種與簡單地刪除某些字符不同的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.