php正则表达式获取两个字符之间的文字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php正则表达式获取两个字符之间的文字相关的知识,希望对你有一定的参考价值。

现在有这样的一个字符串:
-天津市-;-南开区-;-五马路-;
我现在想获取天津市(也就是第一个 “-” 和第二个 “-” 之间的字符串),求php正则表达式代码,十分感谢!
前两个 '' - ''之间的文字不一定是三个,也可能是四个。

参考技术A $img=' -天津市-;-南开区-;-五马路-;';
$result = preg_replace ( "/[^\-]*\-([^\-]*)\-.*/", "$1", $img );
echo $result . "\n";本回答被提问者和网友采纳

正则表达式仅获取php中的第一个字符[关闭]

【中文标题】正则表达式仅获取php中的第一个字符[关闭]【英文标题】:Regex to get only first character in php [closed] 【发布时间】:2018-09-08 05:07:55 【问题描述】:

如何获取字符串唯一的第一个字符?

^1##2##3^1##22##33^1##22##333^1##2##444

输出: 1

如果字符串是:

 ^71##2##3^1##22##33^71##22##333^71##2##444

输出:

71

只想获取 ^ 和 ## 之间的 1。

【问题讨论】:

已在上面编辑。请检查 类似^\W*\K\w+ 的东西?您的问题仍然有点不清楚,您可能需要提供更多示例或告诉我们您所说的“字符”是什么意思。 好的,谢谢!!!! preg_match('~\d+~', $s, $m) 然后$m[0] 你得到答案了吗? 【参考方案1】:

我从 this post 检查了从两个字符串中获取字符串:

function get_string_between($string, $start, $end)
    $string = ' ' . $string;
    $ini = strpos($string, $start);
    if ($ini === false) return '';
    $ini += strlen($start);
    $len = strpos($string, $end, $ini) - $ini;
    return substr($string, $ini, $len);


$fullstring = '^71##2##3^1##22##33^71##22##333^71##2##444';
$parsed = get_string_between($fullstring, '^', '##');

echo $parsed; // (result = 71)

输出将是 71,因为此函数返回第一个匹配值...

【讨论】:

我建议您在从 strpos 进行比较时始终使用 ===。含义 if ($ini == 0) return ''; 应该是 if ($ini === flase) return ''; 因为 strpos 将在未找到时返回 false,并且 false == 0。但是 false !== 0。 谢谢@Andreas 我从这里引用php.net/manual/en/function.strpos.php 并更新了我的答案...【参考方案2】:

您只需要找到以^ 为前缀并后跟两个哈希的字符的第一次出现:

/\^([^\^#]+?)##/

执行以下操作:

    \^ 找到一个 ^ 字符。它需要被转义,因为^ 是正则表达式中的一个特殊字符。 ([^\^#]+?)## 查找最短的字符,它们不是^# 本身,并且后跟两个散列。如果输入^### 应该返回#,因为它是一个以^ 为前缀并后跟两个哈希的字符,只需从[^\^#] 中删除# 以匹配它。

【讨论】:

以上是关于php正则表达式获取两个字符之间的文字的主要内容,如果未能解决你的问题,请参考以下文章

php用正则表达式怎么获得两个字符串之间字符

如果此类字符串在Javascript中包含逗号,则正则表达式获取引号之间的文字字符串的内容

正则表达式获取两个笑脸之间的字符串[重复]

JavaScript正则表达式过滤两个字符之间的文本[重复]

正则表达式:获取 AWS Redshift 中两个字符串之间的值

正则表达式仅获取php中的第一个字符[关闭]