搜索
查看: 1328|回复: 7

string.match模式表达式结果疑惑

[复制链接]

1

主题

9

帖子

83

积分

一级会员

Rank: 2

积分
83
发表于 2017-11-8 22:45:30 | 显示全部楼层 |阅读模式
v14.07
  1. import console;
  2. var str='class="info">123456789</p>'
  3. console.log("(.+)",string.match(str,'class="info">(.+)[<]'))
  4. console.log("(\d+)",string.match(str,'class="info">(\d+)[<]'))
  5. console.pause()
复制代码


我想从str中匹配出 中间的数字 按照文档里 (\d+) 应该能匹配出数字
不知道是我哪里理解错了
得到结果是这样的 用 (.+) 倒是能匹配出来

回复

使用道具 举报

1

主题

9

帖子

83

积分

一级会员

Rank: 2

积分
83
 楼主| 发表于 2017-11-8 22:59:27 | 显示全部楼层
例如模式串:"\w+",置于单引号中应表示为:'\\w+'。一般为避免混淆以及书写方便,模式字符串应置于双引号内(此时\转义符仅适用于模式语义)。

em..原来是这个意思

所以改成

console.log("(\d+)",string.match(str,'class="info">(\\d+)[<]'))


ok
回复

使用道具 举报

3

主题

50

帖子

420

积分

培训班

积分
420
发表于 2017-11-9 08:27:22 | 显示全部楼层
这样也行
console.log("(\d+)",string.match(str,`class="info">(\d+)[<]`))
用``
回复

使用道具 举报

2

主题

39

帖子

335

积分

二级会员

Rank: 3Rank: 3

积分
335
发表于 2017-11-9 09:18:14 | 显示全部楼层

反引号是个好东东
回复

使用道具 举报

3

主题

51

帖子

312

积分

二级会员

Rank: 3Rank: 3

积分
312
发表于 2017-11-10 14:45:38 | 显示全部楼层
错在你用了单引号进行转义
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2017-11-10 15:00:36 | 显示全部楼层
这是一个坑,单引号里"\\"才是模式匹配里的"\"
模式匹配如果有双引号,建议放到反引号里,一般字符串里有反引号的非常少。
回复

使用道具 举报

1

主题

9

帖子

83

积分

一级会员

Rank: 2

积分
83
 楼主| 发表于 2017-11-11 22:55:44 | 显示全部楼层

嗯 感谢感谢
回复

使用道具 举报

1

主题

9

帖子

83

积分

一级会员

Rank: 2

积分
83
 楼主| 发表于 2017-11-11 22:57:11 | 显示全部楼层
Jacen.He 发表于 2017-11-10 15:00
这是一个坑,单引号里"\\"才是模式匹配里的"\"
模式匹配如果有双引号,建议放到反引号里,一般字符串里有 ...

谢谢老大亲自回复。我没仔细看文档。反引号嗯!新大陆!哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-11 20:21 , Processed in 0.062507 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表