Select 正则表达式中的字符串 ruby
Select a string in regex with ruby
我必须清理传入参数的字符串,并删除所有小写字母和除 :
之外的所有特殊字符
- +
- |
- ^
- space
- =>
- <=>
所以我在参数中传递了这个字符串:
aA azee + B => C=
我需要清理这个字符串才能得到这个结果:
A + B => C
我愿意
string.gsub(/[^[:upper:][+|^ ]]/, "")
输出:"A + B C"
我不知道如何 select =>
(以及 <=>
)字符串与 ruby)
中的正则表达式
我知道如果我将 string.gsub(/[^[:upper:][+|^ =>
]]/, "") 添加到我的正则表达式中,最后的 =
在我传入的参数字符串中也会被 selected
您可以尝试另一种方法:匹配您想要 保留 的所有内容,然后合并结果。
您可以使用此正则表达式来匹配您想要保留的所有内容:
[A-Z\d+| ^]|<?=>
如您所见,这只是使用 |
和 []
创建要保留的字符串列表:大写字母、数字、+、|、space , ^, => 和 <=>.
示例:
"aA azee + B => C=".scan(/[A-Z\d+| ^]|<?=>/).join()
输出:
"A + B => C"
注意"A"和“+”之间有2个连续的space。如果你不想,你可以打电话给 String#squeeze
.
(<?=>)|[^[:upper:]+|^ ]
(<?=>)
将 <=>
或 =>
捕获到捕获组 1
[^[:upper:]+|^ ]
匹配任何不是大写字母的字符(与 [A-Z]
相同)或 +
、|
、^
或 space
p "aA azee + B => C=".gsub(/(<?=>)|[^[:upper:]+|^ ]/, '')
结果: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|"
正则表达式读取,"Match lowercase letters, whitespace and punctuation that are not the characters '+'
, ' '
, '|'
and '^'
. &&
within a character class is the set intersection operator. Here it intersects the set of characters that match a-z\s[:punct:]
with those that match [^+ |^]
. (Note that this includes whitespaces other than spaces.) For more information search for "字符类也支持&&运算符"in Regexp。
我没有包括 '=>'
和 '<=>'
,因为它们与 '+'
、' '
、'|'
和 '^'
不同,是多个- 字符串,因此需要一种不同于简单地删除某些字符的方法。
我必须清理传入参数的字符串,并删除所有小写字母和除 :
之外的所有特殊字符- +
- |
- ^
- space
- =>
- <=>
所以我在参数中传递了这个字符串:
aA azee + B => C=
我需要清理这个字符串才能得到这个结果:
A + B => C
我愿意
string.gsub(/[^[:upper:][+|^ ]]/, "")
输出:"A + B C"
我不知道如何 select =>
(以及 <=>
)字符串与 ruby)
我知道如果我将 string.gsub(/[^[:upper:][+|^ =>
]]/, "") 添加到我的正则表达式中,最后的 =
在我传入的参数字符串中也会被 selected
您可以尝试另一种方法:匹配您想要 保留 的所有内容,然后合并结果。
您可以使用此正则表达式来匹配您想要保留的所有内容:
[A-Z\d+| ^]|<?=>
如您所见,这只是使用 |
和 []
创建要保留的字符串列表:大写字母、数字、+、|、space , ^, => 和 <=>.
示例:
"aA azee + B => C=".scan(/[A-Z\d+| ^]|<?=>/).join()
输出:
"A + B => C"
注意"A"和“+”之间有2个连续的space。如果你不想,你可以打电话给 String#squeeze
.
(<?=>)|[^[:upper:]+|^ ]
(<?=>)
将<=>
或=>
捕获到捕获组 1[^[:upper:]+|^ ]
匹配任何不是大写字母的字符(与[A-Z]
相同)或+
、|
、^
或 space
p "aA azee + B => C=".gsub(/(<?=>)|[^[:upper:]+|^ ]/, '')
结果: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|"
正则表达式读取,"Match lowercase letters, whitespace and punctuation that are not the characters '+'
, ' '
, '|'
and '^'
. &&
within a character class is the set intersection operator. Here it intersects the set of characters that match a-z\s[:punct:]
with those that match [^+ |^]
. (Note that this includes whitespaces other than spaces.) For more information search for "字符类也支持&&运算符"in Regexp。
我没有包括 '=>'
和 '<=>'
,因为它们与 '+'
、' '
、'|'
和 '^'
不同,是多个- 字符串,因此需要一种不同于简单地删除某些字符的方法。