【问题标题】:What will be the regex for extracting the data from following string从以下字符串中提取数据的正则表达式是什么
【发布时间】:2016-05-04 10:14:22
【问题描述】:

我必须编写一个必须提取前 16 位数字 (0989563275315984)、crtexttiff1.0_xcvb-uploadtheDoc-hkl56895-20990415-05:11:24,897-2013027676 的应用程序

0989563275315984-1.0_xcvb-uploadtheDoc-hkl56895-20990415-05:11:24,897-2013027676-crtext-tiff.wrk

到目前为止我想出的正则表达式是这样的:

([0-9a-zA-Z]+)-(\\d\\.\\d[_0-9a-zA-Z]*)-([0-9a-zA-Z]+).([a-zA-Z]+).([0-9]?).*

有没有办法为此要求编写正则表达式。提前致谢。

【问题讨论】:

  • 新手错误 - 向我们展示你到目前为止所做的事情。同时查看 [regexr] (regexr.com)
  • 您的问题的答案是是的,有办法。这是否回答了您的实际问题(即“有人可以给我写这个正则表达式吗?”)? 没有。构建这样的正则表达式很简单,不需要太多努力,即使您是 RegEx 的“新手”。
  • @Seth 我使用了这个([0-9a-zA-Z]+)-(\\d\\.\\d[_0-9a-zA-Z]*)-([0-9a-zA-Z]+).([a-zA-Z]+).([0-9]?).*,但它没有在组中给我正确的文本

标签: java regex match extract extraction


【解决方案1】:

试试这个

(\d{16})-(.*?)-(\w+)-(\w+)\.

Regex demo

说明:
( … ):捕获组sample
\:转义特殊字符sample
.:除换行符外的任何字符sample
*: 零次或多次 sample
?: 一次或无一次 sample
\w: "word character": ASCII 字母、数字或下划线 @987654327 @
+:一个或多个sample

【讨论】:

  • 感谢@Tim007 刚刚将第一个 \d 更改为 \w 因为在某些情况下我得到了字母数字输入
【解决方案2】:

简单!

^(\d{16})-(.+)-(\w+)-(\w+)\.wrk$

演示: https://regex101.com/r/aK5fY9/3

解释:

秘密^$^ 是字符串锚点的开头,$ 是字符串锚点的结尾。 {16} 显示角色的次数。

【讨论】:

    猜你喜欢
    • 2014-09-10
    • 2022-01-11
    • 2011-05-10
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多