正则表达式以x或x前缀或后缀

时间:2015-06-03 20:08:39

标签: php regex

我尝试获取字符串的模式匹配,如下所示,将每一行转换为列表项<li>

-Give on result
&Second new text
-The third text

Another paragraph without list.

-New list here

使用自然语言:匹配以-开头并以新行符号\n

结尾的每个字符串

我尝试了以下可行的模式:

/^([-|-]\w+\s*.*)?\n*$/gum

当然我们可以在没有方括号^(-\w+\s*.*)?\n*$的情况下编写它,但是对于调试我按照描述使用它。

在上面的示例中,当我将第-替换为&^([-|&]\w+\s*.*)?\n*$时,它也正常工作,并且它会捕捉到spple字符串的第二行。但是,我无法使其匹配-前缀为空格或带有空格的后缀。

我将示例字符串更改为:

- Give on result
&Second new text
 -The third text

Another paragraph without list.

-New list here

我尝试了以下模式:

/^([-|\- |&| -]\w+\s*.*)?\n*$/gum

然而,它未能将任何后缀或带前缀的-与空格匹配。

Here are原始工作模式的现场演示:

2 个答案:

答案 0 :(得分:1)

根据我的理解,你想要的是一条以元素e(e为&amp;或 - )开头的行,其中元素以空格为前缀/后缀。

^\s*[&-]\s*(.*)$

如果您不想要多线,只需不要使用m修饰符。

答案 1 :(得分:0)

^(\h*(?:-|&)\h*\w+\s*.*)\n*$

你可以试试这个。|里面[]没有特别的意义。见演示。

https://regex101.com/r/nS2lT4/3

字符串可以以空格开头,然后它应该有-&,前面可能有空格。然后它应该至少有一个字母数字字符,前面可能有空格。然后它可以有任何东西。最后,它会耗尽它消耗的所有新行,或者如果它不能消耗掉它。