大佬救命!求一个正则表达式!

新手上路,请多包涵

1、你好正、则2、你好世界3、你好未来4、你好你好

需要拿到d、后面的内容 比如说拿到

0=>你好正、则
1=>你好世界
2=>你好未来
4=>你好你好

阅读 2.5k
5 个回答

不懂php不知php的代码怎么写, 这里这段java的看对你有用否:

@Test  
public void shouldAnswerWithTrue() {  
    String s = "1、你好正、则2、你好世界3、你好未来4、你好你好";  
    String[] phrases = s.split("\\d、");  
    for (String phrase : phrases) {  
        System.out.println(phrase);  
    }  
}

结果:

你好正、则
你好世界
你好未来
你好你好

不带序列号
(?<=\d{1,}、).*?((?=\d{1,}、)|$)

image.png

带序列号
(\d{1,}、).*?((?=\d{1,}、)|$)

image.png

思路就是
从至少1位的数字紧跟着顿号开始取,到下一个至少一位的数字紧跟着顿号或者字符串结尾结束,并且结果不包含结束这里

$p = '/(d)、(D+)/s';  
$str = "1、你好正、则2、你好世界3、你好未来4、你好你好";  
preg_match_all($p, $str, $mtches);  
var_dump($mtches);
<?php
$str = '1、你好正、则2、你好世界3、你好未来4、你好你好';
$chars = preg_split('/(\d+)、/', $str, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>

在线执行

<?php
$rule = '/(\d+)、(\D+)/s';
$str = "1、你好正、则2、你好世界3、你好未来4、你好你好";
preg_match_all($rule, $str, $matches);
echo '<pre>';var_dump($matches);

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏