【问题标题】:Copy matched pattern of line at the end of it在其末尾复制匹配的行模式
【发布时间】:2015-12-02 20:32:19
【问题描述】:

我想匹配文本中的模式,然后将其附加到行尾。在以下情况下,我想匹配数字,然后将其粘贴到行尾。在匹配两个模式的情况下,希望用逗号分隔。 基本上我正在寻找如何将匹配部分用作变量。

我希望在 Bash 中做到这一点。

abc 123=
agdaf456ad
dfaf879:
abc123xyz12:

abc 123=123
agdaf456ad456
dfaf879:879
abc123xyz12:123,12

【问题讨论】:

  • 如果您有多个“数字”怎么办?还是你总是只有一个? “数字”只是“数字序列”吗?
  • 现在我的用例是几个连续的数字。但是在您发表评论之后,我很想知道多个模式是否在单行中匹配。我如何获得不同变量中的模式以及如何使用它?比如 abc123xyz12: ->abc123xyz12:123 或 abc123xyz12: ->abc123xyz12:123-12
  • 请根据实际需求更新问题,并说明您使用的编程语言。 this PHP demo呢?
  • 刚刚意识到刚刚得到了答案,现在编辑问题将使该答案无效。这看起来不对。真的很抱歉造成混乱。我想现在我可以自己找到解决扩展问题的方法了。
  • 不,准确的要求是正确的。发布重复的问题不是一个好主意。请编辑问题以包含实际要求。

标签: regex bash replace find


【解决方案1】:

类似

(\d+)(.*)$

并替换为

$1$2$1

Regex Demo

示例

$replace = preg_replace("/(\d+)(.*)$/", "$1$2$1", "abc 123=");
echo $replace;
=> abc 123=123

【讨论】:

  • @999999999999999999999999999999 php中一个正则表达式字符串替换函数。当我添加答案时,它有一个标签说:/
【解决方案2】:

要获取给定字符串中的所有数字序列,您可以仅使用 \d+ 正则表达式,然后将获得的结果数组内爆并将其附加到输入字符串:

$str = "abc123xyz12:";
preg_match_all('/\d+/', $str, $m);
$append = implode(",", $m[0]);
echo $str . $append;

demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多