Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用正则表达式获取最多个字符的字符串_Php_Regex - Fatal编程技术网

Php 使用正则表达式获取最多个字符的字符串

Php 使用正则表达式获取最多个字符的字符串,php,regex,Php,Regex,以下是我的字符串示例: My title - K21 Some title - G-21 Title something - M-02 我需要去掉代码和连字符,这样我才能得到清晰的标题 My title Some title Title something 这是我到目前为止提出的代码,但它给了我G-21作为结果,我需要相反的结果,我需要正则表达式的结果 $string = 'Some title - G-21'; $pattern = '/.+? (?=–)/i'; /

以下是我的字符串示例:

My title - K21
Some title  - G-21
Title something - M-02
我需要去掉代码和连字符,这样我才能得到清晰的标题

My title
Some title
Title something
这是我到目前为止提出的代码,但它给了我G-21作为结果,我需要相反的结果,我需要正则表达式的结果

$string = 'Some title - G-21';
$pattern = '/.+? (?=–)/i'; // this is ok, &#8211 is for '-'
echo preg_replace($pattern, '', $string);

你必须使用正则表达式吗

<?php
$str = 'Some title  - G-21';
$res = trim(array_shift(explode("&#8211;", $str, 2)));

echo $res;
?>

您必须使用正则表达式吗

<?php
$str = 'Some title  - G-21';
$res = trim(array_shift(explode("&#8211;", $str, 2)));

echo $res;
?>

对多个子字符串使用以下正则表达式模式:

$str = "My title - K21
Some title  - G-21
Title something - M-02";

$result = preg_replace("/-\s+[A-Z]-?\d+/", "", $str);

print_r($result);
输出:

My title 
Some title  
Title something 

对多个子字符串使用以下正则表达式模式:

$str = "My title - K21
Some title  - G-21
Title something - M-02";

$result = preg_replace("/-\s+[A-Z]-?\d+/", "", $str);

print_r($result);
输出:

My title 
Some title  
Title something 

从两个方面来看这个问题。您的问题的第一个直接答案是使用而不是preg_替换


第二种方法是使用当前的preg_replace语法去掉字符串的末尾。类似于
/\s+-.++$/
的东西应该可以用来去除连字符及其后面的所有内容,有两种方法来看待这个问题。您的问题的第一个直接答案是使用而不是preg_替换


第二种方法是使用当前的preg_replace语法去掉字符串的末尾。类似于
/\s+-.++$/
的东西应该可以用来去除连字符及其后面的所有内容

如果有多个空格连字符空格,则它将不起作用。查看是否有多个空格连字符空格,它将不起作用。看,代码总是存在吗?文件中可以有多个空格连字符空格吗?代码当前存在,我不确定是否会是这样。同样对于标题,一切都是可能的:使用
preg\u替换为,或使用
preg\u匹配为。代码是否始终存在?文件中可以有多个空格连字符空格吗?代码当前存在,我不确定是否会是这样。同样对于标题,一切都是可能的:使用
preg\u替换为,或者使用
preg\u匹配为。我想知道你为什么选择
\b
?代码似乎位于字符串的末尾,
$
看起来更合适。另外,为什么您倾向于使用
{1,}
而不是
+
?还有一个:
-\s+?[A-Z]
=
-\s+[A-Z]
@WiktorStribiżew,至于
\b
-同意,至于
{1,}
-用作
+
的替代品。但是,在您看来,为什么在这个
\s+?
案例中ungrady opearator是多余的呢?在
\s+?
\s+
之间的行为没有区别。你期望有什么不同?在如此简单的情况下,也许是的。。。在工作日结束时,我错过了这些事情。固定的。谢谢我想知道你为什么选择
\b
?代码似乎位于字符串的末尾,
$
看起来更合适。另外,为什么您倾向于使用
{1,}
而不是
+
?还有一个:
-\s+?[A-Z]
=
-\s+[A-Z]
@WiktorStribiżew,至于
\b
-同意,至于
{1,}
-用作
+
的替代品。但是,在您看来,为什么在这个
\s+?
案例中ungrady opearator是多余的呢?在
\s+?
\s+
之间的行为没有区别。你期望有什么不同?在如此简单的情况下,也许是的。。。在工作日结束时,我错过了这些事情。固定的。谢谢