我有一个字符串,例如:
$foo = 'Hello __("How are you") I am __("very good thank you")'
Run Code Online (Sandbox Code Playgroud)
我知道这是一个奇怪的字符串,但请跟我一起:P
我需要一个正则表达式来查找__("在这里查找内容")之间的内容并将其放在一个数组中.
即正则表达式会找到"你好吗"和"非常好,谢谢你".
我有一个数组:
array('id' => 'really')
Run Code Online (Sandbox Code Playgroud)
我有一个字符串:
$string = 'This should be {id} simple.';
Run Code Online (Sandbox Code Playgroud)
我想最终得到:
This should be really simple.
Run Code Online (Sandbox Code Playgroud)
我有一个正常的表达式,可以使用{id}方面,但我很难做我想做的事情.
/{([a-zA-Z\_\-]*?)}/i
Run Code Online (Sandbox Code Playgroud)
{id}可以是任何内容,{foo}或{bar}或与我的正则表达式匹配的任何内容.
我确信目前有一个简单的解决方案正在逃避我.
谢谢,
贾斯汀
function recursiveSplit($string, $layer) {
$err = preg_match_all("/\{(([^{}]*|(?R))*)\}/",$string,$matches);
echo "Elementi trovati: $err<br>";
if($err == FALSE) echo "preg_match_all ERROR<br>";
// iterate thru matches and continue recursive split
if (count($matches) > 1) {
for ($i = 0; $i < count($matches[1]); $i++) {
if (is_string($matches[1][$i])) {
if (strlen($matches[1][$i]) > 0) {
echo "<pre>Layer ".$layer.": ".$matches[1][$i]."</pre><br />";
recursiveSplit($matches[1][$i], $layer + 1);
}
}
}
}
}
$buffer = "{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}";
recursiveSplit($buffer, 0);
Run Code Online (Sandbox Code Playgroud)
产量
Elementi trovati:
preg_match_all ERROR
Backtrack limit was exhausted!
Run Code Online (Sandbox Code Playgroud)
此代码给出了PREG_BACKTRACK_LIMIT_ERROR错误...但回溯限制设置为100.000.000.
这是我第一次使用正则表达式,我真的不知道如何解决它.
非常感谢,Marco
几天来我一直在思考这个问题,但似乎没有什么能得到想要的结果。
例子:
$var = "Some Words - Other Words (More Words) Dash-Binded-Word";
Run Code Online (Sandbox Code Playgroud)
想要的结果:
array(
[0] => Some Words
[1] => Other Words
[2] => More Words
[3] => Dash-Bound-Word
)
Run Code Online (Sandbox Code Playgroud)
我能够使用 preg_match_all 使这一切正常工作,但随后“Dash-Bound-Word”也被分解了。试图将它与周围的空格匹配是行不通的,因为它会破坏除破折号外的所有单词。
我使用的 preg_match_all 语句(也打破了破折号绑定词)是这样的:
preg_match_all('#\(.*?\)|\[.*?\]|[^?!\-|\(|\[]+#', $var, $array);
Run Code Online (Sandbox Code Playgroud)
我当然不是 preg_match、preg_split 方面的专家,因此这里的任何帮助将不胜感激。
我正在尝试匹配%s中包含的子字符串,但preg_match_all似乎在同一行中同时包含多个子字符串.
代码如下所示:
preg_match_all("/%.*%/", "%hey%_thereyou're_a%rockstar%\nyo%there%", $matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)
这产生以下输出.
Array
(
[0] => Array
(
[0] => %hey%_thereyou're_a%rockstar%
[1] => %there%
)
)
Run Code Online (Sandbox Code Playgroud)
但是我希望它能生成以下数组:
[0] => %hey%
[1] => %rockstar%
[2] => %there%
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正在使用 PHP,我有这样的文字:
first [abc] middle [xyz] last
Run Code Online (Sandbox Code Playgroud)
我需要了解括号内外的内容。在 StackOverflow 中搜索,我找到了一个模式来获取里面的内容:
preg_match_all('/\[.*?\]/', $m, $s)
Run Code Online (Sandbox Code Playgroud)
现在我想知道获取外部内容的模式。
问候!
我需要捕获给定html中的所有链接.
这是示例代码:
<div class="infobar">
... some code goes here ...
<a href="/link/some-text">link 1</a>
<a href="/link/another-text">link 2</a>
<a href="/link/blabla">link 3</a>
<a href="/link/whassup">link 4</a>
... some code goes here ...
</div>
Run Code Online (Sandbox Code Playgroud)
我需要把所有环节中div.infobar,与开始/link/
我试过这个:
preg_match_all('#<div class="infobar">.*?(href="/link/(.*?)") .*?</div>#is', $raw, $x);
Run Code Online (Sandbox Code Playgroud)
但它给了我唯一的第一场比赛.
谢谢你的建议.
preg_match_all('/(\d{4})/', $text, $matches);
Run Code Online (Sandbox Code Playgroud)
使用上面的函数,我们可以从给定的字符串中提取精确的 4 位数字。
如何使用正则表达式提取包含大于 4 位数字的数字..
有没有办法在正则表达式中指定最小长度?
我有这句话
"My name's #jeff,what is thy name?"
Run Code Online (Sandbox Code Playgroud)
现在我想#jeff从这句话中得到。我已经尝试过这段代码
for ($i=0; $i <=substr_count($Text,'#'); $i++) {
$a=explode('#', $Text);
echo $a[$i];
}
Run Code Online (Sandbox Code Playgroud)
但它的回归#jeff,what is thy name?并不是我灵魂所渴望的
我在尝试从字符串中提取特定值但未获得正确输出时遇到问题.
$string = com.xyz.ghop.service.sprint.Sprint@1b0258c[id=257,rapidViewId=94,state=CLOSED,name=Alert Success 5,goal=,startDate=2016-08-16T20:20:46.730+05:30,endDate=2016-08-26T20:20:00.000+05:30,completeDate=2016-08-26T21:18:53.928+05:30,sequence=257]
Run Code Online (Sandbox Code Playgroud)
我希望name =中的值直到逗号,我尝试使用preg_match_all,但它只是给出了第一个单词.
这是我试过的:
preg_match_all("/(?=name\=([^\W]+))/", $string, $matches);
$resulte = implode(",", $matches[1]);
Run Code Online (Sandbox Code Playgroud)
请帮忙
谢谢