字符串总是不同的!我不知道Rate the Code
实际上会是什么。
我正在寻找我正在尝试解析的PHP字符串的特定正则表达式。
我的字符串看起来像这样:
- :description: Rate the Code
:long_description: ""
- :description: Full Marks
:long_description: ""
- :description: No Marks
:long_description: ""
- :description: Rate the Asthetics
:long_description: This is a long description for Rate the Asthetics.
- :description: Full Marks
:long_description: ""
- :description: No Marks
:long_description: ""
每行后都有换行符。
我想解析Rate the Code
这个词。这需要正则表达式寻找:
\n
”。PHP:
if (strpos($explodearray[$i], 'description:') !== false) {
echo $explodearray[$i]."\n";
}
答案 0 :(得分:2)
使用描述的正则表达式回答:
/^.*:\s(.*)$/gm
DEMO
说明:
在:
之后捕获文本,直到行尾。
它采用描述和长描述的值。
Php demo HERE
不需要PREG_MATCH_OFFSET,匹配[1]将包含匹配文本数组。
答案 1 :(得分:0)
我不是RegEx的最佳人选,所以可能有一个更短的方式来编写它,但如果我正确理解了这个问题,你想将这个平面文件格式转换为数组吗?
$ str是你的扁平结构字符串:
$re = "/\\s*\\-?\\s*:([a-zA-Z0-9\\_]*):\\s*(.*)\\n?/";
preg_match_all($re, $str, $matches);
会回来:
MATCH 1
1. [3-14] `description`
2. [16-29] `Rate the Code`
MATCH 2
1. [33-49] `long_description`
2. [51-53] `""`
MATCH 3
1. [59-70] `description`
2. [72-82] `Full Marks`
MATCH 4
1. [88-104] `long_description`
2. [106-108] `""`
MATCH 5
1. [114-125] `description`
2. [127-135] `No Marks`
MATCH 6
1. [141-157] `long_description`
2. [159-161] `""`
MATCH 7
1. [165-176] `description`
2. [178-196] `Rate the Asthetics`
MATCH 8
1. [200-216] `long_description`
2. [218-268] `This is a long description for Rate the Asthetics.`
MATCH 9
1. [274-285] `description`
2. [287-297] `Full Marks`
MATCH 10
1. [303-319] `long_description`
2. [321-323] `""`
MATCH 11
1. [329-340] `description`
2. [342-350] `No Marks`
MATCH 12
1. [356-372] `long_description`
2. [374-376] `""`
答案 2 :(得分:-1)
如果没有更好地解释您的要求,那么:
if($myString=='- :description: Rate the Code' . "\n"){
$myResult='Rate the Code';
}
在阅读了您的额外解释之后,为什么不使用:
$myString=<<<EOS
- :description: Rate the Code
:long_description: ""
- :description: Full Marks
:long_description: ""
- :description: No Marks
:long_description: ""
- :description: Rate the Asthetics
:long_description: This is a long description for Rate the Asthetics.
- :description: Full Marks
:long_description: ""
- :description: No Marks
:long_description: ""
EOS;
preg_match('/(:description:(.*))/', $myString, $matches);
var_dump($matches);