顺序 | 运算符 | 意义 |
高 | | | | | | | | | | | | | | | | | | |
|
|
| | | | | | 低 |
:: | 在定义嵌套的类和模块的类外可通过使用 ":" 对其访问 |
[] | 数组操作符 | |
! | 返回操作数的相反值 | |
~ | 按位取反 | |
+(单) | 正号 | |
** | 幂 | |
-(单) | 负号 | |
* | 乘 | |
/ | 除 | |
% | 取模 | |
+ | 加 | |
- | 减 | |
<< | 左移 | |
>> | 右移 | |
& | 位与 | |
| | 位或 | |
^ | 位异或 | |
< | 小于 | |
> | 大于 | |
<= | 小于等于 | |
>= | 大于等于 | |
<=> | 比较大小。小于,等于,大于,分别返回 -1, 0 或 +1 | |
== | 恒等于 | |
!= | 不等于 | |
=~ | 肯定匹配 | |
!~ | 否定匹配 | |
=== | 用来比较case语句的目标和每个when从句的项 | |
&& | 逻辑与 | |
|| | 逻辑或 | |
.. | 区间(含尾部元素) | |
... | 区间(不含尾部元素) | |
?: | 条件运算符 | |
= | 负值 | |
not | 返回操作数的相反值 | |
and | 逻辑与 | |
or | 逻辑或 |
2009年5月9日星期六
ruby的运算符
2009年5月6日星期三
让正式表达式 '.' 也能查找到换行
使用 Ruby 正则表达式中的 m 检索模式, 例:
注:
/../m 在 Ruby 的正则表达式中, m 为多行检索时,换行符会被看做普通字符来处理.
p /./ =~ "\n" #=> nil p /./m =~ "\n" #=> 0 |
注:
/../m 在 Ruby 的正则表达式中, m 为多行检索时,换行符会被看做普通字符来处理.
2009年5月3日星期日
从首字符或尾字符开始的查找
在 Ruby 的正则表达式中, "首字符" 为 \A, "尾字符" 为 \z(注意z是小写字符)
注:
我们经常会在正则表达式中看到, ^ 和 $ 运算符. 它们分别表示为 行首 和 行末.
??:
/../m 在 Ruby 的正则表达式中, m 为多行检索时,换行符会被看做普通字符来处理.
\Z 在 Ruby 的正则表达式中, 表示字符串中的行末.
p (/\Aa/ =~ "aiueo") #=> 0 p (/\Ao/ =~ "aiueo") #=> nil p (/a\z/ =~ "aiueo") #=> nil p (/o\z/ =~ "aiueo") #=> 4 |
注:
我们经常会在正则表达式中看到, ^ 和 $ 运算符. 它们分别表示为 行首 和 行末.
p "abc\ndef\nghi\n".slice(/..$/m) #=> "bc" p "abc\ndef\nghi\n".slice(/..\Z/m) #=> "hi" p "abc\ndef\nghi\n".slice(/..\z/m) #=> "i\n" |
??:
/../m 在 Ruby 的正则表达式中, m 为多行检索时,换行符会被看做普通字符来处理.
\Z 在 Ruby 的正则表达式中, 表示字符串中的行末.
字符串的查找
查找匹配字符
用正则表达式查找匹配字符时,使用 =~ 运算符.
查找匹配字符最初出现在位置
查找匹配字符最初出现在位置时,使用 String#index
查找匹配字符最后出现在位置
查找匹配字符最后出现在位置时,使用 String#rindex
取得匹配字符外的字符串
取得到匹配字符之后的字符串,使用 Regexp#match
查找字符串中匹配的所有字符
查找字符串中匹配的所有字符,使用 String#scan
取得含有匹配字符的一行
含有匹配字符的复数行.使用 String#grep (Enumerble#grep)
以下的两种写法同上相同
用正则表达式查找匹配字符时,使用 =~ 运算符.
# 查找含有全角空格和半角空格. p ([\s\t] =~ 'a c') #=> 1 p ([\s\t] =~ 'abc') #=> nil |
查找匹配字符最初出现在位置
查找匹配字符最初出现在位置时,使用 String#index
p 'xxxabcabcabcxxx'.index('abc') #=> 3 p 'xxxabcabcabcxxx'.index('.') #=> nil p 'xxx..............xxx'.index('.') #=> 3 |
查找匹配字符最后出现在位置
查找匹配字符最后出现在位置时,使用 String#rindex
p 'xxxabcabcabcxxx'.rindex('abc') #=> 9 p 'xxxabcabcabcxxx'.rindex('.') #=> nil p 'xxx..............xxx'.rindex('.') #=> 16 |
取得匹配字符外的字符串
取得到匹配字符之后的字符串,使用 Regexp#match
m = /abc/.match('xxxabcabcabcxxx') p m.post_match #=> "abcabcxxx" m = 'xxxabcabcabcxxx'.match(/abc/) p m.post_match #=> "abcabcxxx" |
查找字符串中匹配的所有字符
查找字符串中匹配的所有字符,使用 String#scan
# 查找字符串中的所有字母. str = "abc所\ndef有\nghi字符\n" str.scan(/[a-z]+/){ |s| p s } #=> "abc" #=> "def" #=> "ghi" |
取得含有匹配字符的一行
含有匹配字符的复数行.使用 String#grep (Enumerble#grep)
# 输出含有字母 a 和 g 的一行. str = "abc所\ndef有\nghi字符\n" str.grep(/[ag]/){ |line| p line } #=> "abc所\n" #=> "ghi字符\n" |
以下的两种写法同上相同
str.grep(re){ |line| # 处理内容 } |
str.each{ |line| if re =~ line # 处理内容 end } |
订阅:
博文 (Atom)