我正在处理一个Php脚本。但不幸的是我在REGEX部分真的很穷。我想提取这样的东西。在首次出现整数之前提取一段字符串
我给该字符串是:
的Hello World! 2016祝你有美好的一天!
现在,我想它到一个数组拆分为
{ “1”: “世界,你好!”, “2”: “有一个漂亮的前一天”}
我想在遇到Integer时将其分开。它只是,我需要一个正则表达式。有人可以帮我解决这个问题吗?另外,请给我建议一些可以帮助我学习REGEX的链接。提前感谢您。
我正在处理一个Php脚本。但不幸的是我在REGEX部分真的很穷。我想提取这样的东西。在首次出现整数之前提取一段字符串
我给该字符串是:
的Hello World! 2016祝你有美好的一天!
现在,我想它到一个数组拆分为
{ “1”: “世界,你好!”, “2”: “有一个漂亮的前一天”}
我想在遇到Integer时将其分开。它只是,我需要一个正则表达式。有人可以帮我解决这个问题吗?另外,请给我建议一些可以帮助我学习REGEX的链接。提前感谢您。
最简单的方法是使用preg_split()
。很明显它做什么(用正则表达式分割字符串),并产生符合您要求的输出:
php > $s = "Hello World! 2016 Have a nice day ahead!";
php > $pattern = "/\s+\d+\s+/";
php > $a = preg_split($pattern, $s);
php > print_r($a);
Array
(
[0] => Hello World!
[1] => Have a nice day ahead!
)
唯一的区别是,你的问题要求1为基础的索引,而这个答案提供0基于索引。你应该更喜欢基于0的索引,因为这是默认的PHP序列即数组,字符串等
提供资源的链接已经超出了SO范围,但是,你可以尝试:
或从简单的谷歌小号任何成千上万人的可达目录操作搜索。
或者,如果您知道定界字符串的字面值,你可以使用explode()
:
php > $s = "Hello World! 2016 Have a nice day ahead!";
php > $delimiter = " 2016 ";
php > $a = explode($delimiter, $s);
php > print_r($a);
Array
(
[0] => Hello World!
[1] => Have a nice day ahead!
)
/^([\D]+)\s+\d+\s+(.*)$/
应该这样做。
你得到所有的非数字,然后数字与他们周围的空白,然后剩下的。
全部放在一起:
$string = 'Hello World! 2016 Have a nice day ahead!';
preg_match('/^([\D]+)\s+\d+\s+(.*)$/', $string, $match);
// $match[1]: Hello World!
// $match[2]: Have a nice day ahead!
非常感谢你!这是有道理的。 Bt我不会标记你的答案是正确的,直到我的两个问题都得到回答。 –
@Milind使用http://regexone.com/和http://regexr.com/来学习正则表达式。 –
我喜欢这张备忘单:http://www.cheatography。com/davechild/cheat-sheets/regular-expressions /,并通过https://regex101.com/进行快速测试 –
1.为什么它必须是一个正则表达式? 2.你在拆分什么,固定字符串“2016”? – mhawke
字符串2016未固定。它可以是任何整数。 –
请将完整的规格 - 拆分的基础 - 添加到问题中。 – Praveen