【问题标题】:How to extract certain portion of String using RegEx expression?如何使用正则表达式提取字符串的某些部分?
【发布时间】:2017-08-23 17:26:30
【问题描述】:

我想从给定的字符串中提取某些值

字符串 --> 1ABCDE23

我只需要上述字符串值中的 ABCDE。总是跳过第一个值(1)并获取接下来的 5 个字符(ABCDE)并跳过其余的(23)

感谢您的帮助

【问题讨论】:

  • 这不是正则表达式编写服务。到目前为止,您自己尝试过什么?
  • 总是跳过第一个值 = ^.,获取接下来的 5 个字符 = (.{5}),跳过其余的 = ` `
  • 谢谢! sln 和肯为您的答复。当我尝试使用 RegEx : \d+(.{5}) 检查在线工具 (regex101.com) 时,它显示正确的输出,但显然它不起作用。
  • 它正在工作。您不知道如何使用它,也没有人可以帮助您,因为您既没有向我们提供您拥有的代码,也没有提供您尝试过的内容。

标签: regex regex-negation


【解决方案1】:

总是跳过第一个值(1)并获取接下来的 5 个字符(ABCDE)并跳过其余的(23)

这只是从字符串中提取子字符串!您不需要正则表达式 - 假设您使用的是理智的语言,那么在您使用的语言中必须有一个更快的函数。

这里有一些例子:

  • Java:String abcde = "1ABCDE23".substring(1, 6);
  • JavaScript:var abcde = "1ABCDE23".substring(1, 6);
  • C++:std::string abcde = std::string("1ABCDE23").substr(1, 5);
  • 蟒蛇:abcde = "1ABCDE23"[1:6]
  • PHP:$abcde = substr("1ABCDE23", 1, 5);
  • C#:string abcde = "1ABCDE23".Substring(1, 5);
  • Perl:$abcde = substr "1ABCDE23", 1, 5;
  • 鲁比:abcde = "1ABCDE23"[1...6]

如果您使用的疯狂语言具有支持捕获组但不支持从字符串中提取子字符串的正则表达式引擎,则可以运行此正则表达式(suggested by sln)并获取第一个捕获组:

^.(.{5}).*

^          the match must be at the beginning of the string
 .         match any character
  (    )   put what's matched by the parenthesized expression into the 1st capturing group
   .{5}    match 5 characters; any character goes
        .* match 0 or more characters; any character goes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多