首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配EOL的角色?

匹配EOL的角色?
EN

Stack Overflow用户
提问于 2014-12-08 08:35:16
回答 2查看 459关注 0票数 1

我试图从如下的RTTTL命令字符串中捕获这些命令:

代码语言:javascript
复制
 2a4, 2e, 2d#, 2b4, 2a4, 2c, 2d, 2a#4, 2e., e, 1f4, 1a4, 1d#, 2e., d, 2c., b4, 1a4, 1p, 2a4, 2e, 2d#, 2b4, 2a4, 2c, 2d, 2a#4, 2e., e, 1f4, 1a4, 1d#, 2e., d, 2c., b4, 1a4

我使用的正则表达式是具有全局和多行on的(\S+),|$,因为我看到在多行模式打开时,$与EOL匹配,但是这种情况不会发生,因此我无法捕获最后一个命令1a4,该命令的末尾是行。所有其他命令都是从组中捕获的。

我应该使用什么regex来捕获最后一个命令?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-08 08:37:21

只需添加一个前瞻性或非捕获组,如下所示。并从组索引1中获取您想要的字符串。

代码语言:javascript
复制
(\S+)(?:,|$)

演示

代码语言:javascript
复制
(\S+)(?=,|$)

演示

在使用展望时,您也不需要有一个捕获组。

代码语言:javascript
复制
\S+(?=,|$)

(?=,|$)正前瞻断言,匹配后必须有一个,或行锚的末尾。\S+匹配一个或多个非空格字符。

票数 0
EN

Stack Overflow用户

发布于 2014-12-08 09:04:10

另一个解决方案

代码语言:javascript
复制
$a = " 2a4, 2e, 2d#, 2b4, 2a4, 2c, 2d, 2a#4, 2e., e, 1f4, 1a4, 1d#, 2e., d, 2c., b4, 1a4, 1p, 2a4, 2e, 2d#, 2b4, 2a4, 2c, 2d, 2a#4, 2e., e, 1f4, 1a4, 1d#, 2e., d, 2c., b4, 1a4"; 
$r=explode(",",preg_replace("/\\s+/","",$a));
var_dump($r);

输出:

代码语言:javascript
复制
array (size=37)
  0 => string '2a4' (length=3)
  1 => string '2e' (length=2)
  2 => string '2d#' (length=3)
  3 => string '2b4' (length=3)
  4 => string '2a4' (length=3)
  5 => string '2c' (length=2)
  6 => string '2d' (length=2)
  7 => string '2a#4' (length=4)
  8 => string '2e.' (length=3)
  9 => string 'e' (length=1)
  10 => string '1f4' (length=3)
  11 => string '1a4' (length=3)
  12 => string '1d#' (length=3)
  13 => string '2e.' (length=3)
  14 => string 'd' (length=1)
  15 => string '2c.' (length=3)
  16 => string 'b4' (length=2)
  17 => string '1a4' (length=3)
  18 => string '1p' (length=2)
  19 => string '2a4' (length=3)
  20 => string '2e' (length=2)
  21 => string '2d#' (length=3)
  22 => string '2b4' (length=3)
  23 => string '2a4' (length=3)
  24 => string '2c' (length=2)
  25 => string '2d' (length=2)
  26 => string '2a#4' (length=4)
  27 => string '2e.' (length=3)
  28 => string 'e' (length=1)
  29 => string '1f4' (length=3)
  30 => string '1a4' (length=3)
  31 => string '1d#' (length=3)
  32 => string '2e.' (length=3)
  33 => string 'd' (length=1)
  34 => string '2c.' (length=3)
  35 => string 'b4' (length=2)
  36 => string '1a4' (length=3)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27354145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档