需要正则表达式来提取字符串中的第 5 到第 8 个字符

Posted

技术标签:

【中文标题】需要正则表达式来提取字符串中的第 5 到第 8 个字符【英文标题】:Need a Regular expression to extract 5th to 8th characters in a string 【发布时间】:2011-07-12 07:57:48 【问题描述】:

需要一个 UNIX 正则表达式来提取第 4 到第 8 个字母。

例如:文件 15870712.iis 如果我们想提取 Ist 3 位数字,我们可以给出 '^([0-9][0-9][0-9])' > 158

我需要第 5、第 6、第 7 和第 8 个角色。 > 0712

【问题讨论】:

出于好奇,既然您知道确切的索引位置,为什么在子字符串操作时使用正则表达式就足够了? 这由一个函数使用,该函数将根据索引位置提取字段。 ..不排除使用子字符串的任何理由? 【参考方案1】:
$letters = substr($string, 4, 4);

它不使用正则表达式,而是完全按照您的意愿行事。根据您的问题,绝对不需要复杂的模式匹配。

【讨论】:

【参考方案2】:

字母或任何字符?如果是后者:

/^....(....)/

【讨论】:

这是第 4 到第 8 次,不是第 5 到第 8 次。 OP 要求从 4 日到 8 日。既然你提到了,他/她还要求从 5 日到 8 日。有趣的是,有 2 次提到 5-8,只有 1 次提到 4-8,我看到了奇怪的。 :)【参考方案3】:

这将匹配从位置 5 到 8 的数字,并假定前 4 个位置的任何字符。

^.4([0-9]4)

如果您也需要前 4 个位置为数字,则可以使用它:

^[0-9]4([0-9]4)

【讨论】:

谢谢。但这将包括 Ist 几个字符。 我需要将索引位置 5 到 8 的字母剪掉。 您可以访问分组匹配吗?如果是这样,请尝试检索第 1 组的内容。您将使用哪种语言?

以上是关于需要正则表达式来提取字符串中的第 5 到第 8 个字符的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 - 尝试从字符串中提取 5 位单词(presto)

java 从字符串提取数据

用 $1 替换正则表达式中的第一个 - JAVA

正则表达式与 C# 中的 OR 条件最长匹配

使用 sed 和正则表达式从字符串中提取数字

正则表达式在两个字符串(它们是变量)之间提取