使用ruby在正则表达式中选择一个字符串

Vin*_*off 1 ruby regex rubular

我必须清理参数中传递的字符串,并删除所有小写字母和所有特殊字符,除了:

  • +
  • |
  • ^
  • 空间
  • =>
  • <=>

所以我在参数中传递了这个字符串:

aA azee + B => C=

我需要清理此字符串以获得此结果:

A + B => C

我做

string.gsub(/[^[:upper:][+|^ ]]/, "")

输出: "A + B C"

我不知道如何在ruby中用正则表达式选择=>(和for <=>)字符串

我知道如果我将string.gsub(/ [^ [:upper:] [+ | ^ =>]] /,"")添加到我的正则表达式中,=我的字符串中传递的最后一个参数也会被选中

Swe*_*per 5

您可以尝试另一种方法:匹配您想要保留的所有内容,然后加入结果.

您可以使用此正则表达式来匹配您要保留的所有内容:

[A-Z\d+| ^]|<?=>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这只是一个使用|[]创建一个您想要保留的字符串列表:大写,数字,+,|,空格,^,=>和<=>.

例:

"aA azee + B => C=".scan(/[A-Z\d+| ^]|<?=>/).join()
Run Code Online (Sandbox Code Playgroud)

输出:

"A  + B => C"
Run Code Online (Sandbox Code Playgroud)

请注意,"A"和"+"之间有2个连续的空格.如果你不想要,你可以打电话String#squeeze.