sofoo

sofoo

0个粉丝

5

问答

0

专栏

3

资料

sofoo  发布于  2008-07-11 20:54:08
采纳率 0%
5个问答
4190

Perl正则表达式的几个问题

匹配的循环:
while ("balata" =~ /.a/g) {
     $match = $&;
     print ("$match\n");
}
结果为:
     ba
     la
     ta
请问循环是如何终止的。另:
   @matches = "balata" =~ /.a/g; # now @matches = ("ba", "la", "ta")
   @matches = "balata" =~ /.a/; # now @matches = 1
请问是何原因导致全局标识g(global)在此对该赋值语句产生了本质影响。
我来回答
回答1个
时间排序
认可量排序

aduadu

0个粉丝

98

问答

0

专栏

45

资料

aduadu 2008-07-11 20:56:25
认可0
perl在全局匹配时会自动保存下次匹配开始的位置,所以匹配完ta后,再往后就找不到
匹配串了,while终止。如果你想读取下次匹配的开始位置,使用pos()函数就可以了。

如果左值类型是array,带g就会返回所有搜到的匹配串,没有g则返回true/false

推荐你看mastering regexp,新华书店就有。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区