【问题标题】:Perl Regex to get a substring between two of the same charactersPerl Regex 获取两个相同字符之间的子字符串
【发布时间】:2013-09-14 16:25:28
【问题描述】:

给定一些字符串originalString = "#SomeWord# More words",我希望能够从originalString 中获取子字符串"SomeWord"

【问题讨论】:

  • 所以你只想要由井号标记的字符串?

标签: regex string perl substring


【解决方案1】:

/#([^#]+)#/ 为我工作。

一些语法说明:

  • // 标记正则表达式开始和结束的分隔符
  • # 文字哈希标记
  • [] 一个字符类

上面正则表达式的解释:

  • [^#] 任何不是井号的字符
  • [^#]+ 一个或多个这样的字符
  • ([^#]+)capturing group 以上

在这种情况下,正则表达式会查找两个 # 之间的任何非 # 字符。这是一个完整的例子:

my $foo = "#SomeWord# More words";

if ($foo =~ /#([^#]+)#/) {
    print "$1\n";
} else {
    print "no match\n";
}

【讨论】:

  • 请注意,此正则表达式不会捕获##,但这可能是预期行为。
【解决方案2】:
my $substr = (split /#/, $originalString)[1];

【讨论】:

  • 误报。仔细检查后发现我违反了 Perl 关联性规则。我有print (split /#/, $originalString)[1];
【解决方案3】:

你也可以使用正则表达式:

$originalString=~ /\#([^#]+)\#/;
# Now $1 holds your required string

【讨论】:

    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多