【问题标题】:Regex extracting first part and table name then adding second part as information正则表达式提取第一部分和表名,然后添加第二部分作为信息
【发布时间】:2021-07-06 06:40:11
【问题描述】:

我正在尝试使用正则表达式来分隔具有特定分隔符的列。该字段包含以下示例,例如User ID 应该成为列名,然后用: 分隔,并以| 结束该特定列,但是这可能有不同的长度。这是示例列:

User ID : '1090affb-4f54-4f12-b47f-57a94ab4ce0d' | User Name : 'Lee76@gmail.com' | Rma : '12929311' | T&C Version : '2'
User ID : '6398b7f3-f248-497e-bb5b-7ecf86833255' | User Name : 'rud41@gmail.com' | Rma : '12985811' | T&C Version : '2'
User ID : 'f7602cee-35ae-444f-a955-5f41c1babe1c' | User Name : 'carinak65@gmail.com' | Rma : '14626311' | T&C Version : '2'
User ID : '07177e26-d4af-4302-9c4b-feb68087103b' | User Name : 'berghcea3@gmail.com' | Rma : '12511156' | T&C Version : '2'
User ID : '6b904713-3fad-464f-baed-f6ea48ee7aab' | User Name : 'hesterafzee@gmail.com' | Rma : '10611503' | T&C Version : '2' | Abc : '252314620'
User ID : 'c4600019-71cb-4f37-a873-48c1f31dc4b2' | User Name : 'faricwl@gmail.com' | Rma : '12511714' | T&C Version : '2'
User ID : '6cb88928-4856-4d47-a155-74b6d760b1cf' | User Name : 'piena331@gmail.com' | Rma : '12811759' | T&C Version : '2'
User ID : '200694d3-da0f-4154-9000-0024ac451aad' | User Name : 'Andrea.ze@gmx.de' | Rma : '11165338' | T&C Version : '2'
User ID : 'd78bb37a-756f-48f9-b654-b9d459ae03b6' | User Name : 'mwians@gmail.com' | Rma : '12116265' | T&C Version : '2'
User ID : 'ef7419ba-361b-45f9-bf7a-37d98f129fad' | User Name : 'kawayalen567@gmail.com' | Rma : '12112914' | T&C Version : '2'

所以我想要实现的是获得如下输出:

User ID
1090affb-4f54-4f12-b47f-57a94ab4ce0d

User Name
Lee76@gmail.com

Rma
12929311

T&C Version
2

我尝试了以下方法,但它太具体了,希望更通用,只关注拆分指标:

^User\sID\s:\s'[A-Za-z0-9]*-[A-Za-z0-9]*-[A-Za-z0-9]*-[A-Za-z0-9]*-[A-Za-z0-9]*'\s\|\sUser\sName\s:\s'[A-Za-z0-9]*@*

这也是我试过的例子:

https://regex101.com/r/8SsA6G/1

【问题讨论】:

  • 你能告诉我们你已经尝试过什么吗?
  • 我在上面的问题中添加了我厌倦的内容,但是它太具体了,我不知道如何通过 : 和 | 拆分项目不分长度

标签: sql regex


【解决方案1】:

替换

^(User\sID)\s:\s'([^']*)'\s\|\s(User\sName)\s:\s'([^']+)'\s\|\s(Rim)\s:\s'([^']*)'\s\|\s(T&C\sVersion)\s:\s'([^']+)'$

与:

\1\n\2\n\n\3\n\4\n\n\5\n\6\n\n\7\n\8\n\n

查看演示:https://regex101.com/r/9ITQzr/1

注意:

  • [^'] 表示任何不是' 的字符
  • (...)capturing group,您可以使用 \1\2 等(或 $1$2 等,具体取决于语言)引用它

编辑:通用解决方案可以替换:

([^:]+?)\s:\s'([^']*)'(?:\s\|\s|$)?

与:

\1\n\2\n\n

查看演示:https://regex101.com/r/TGVwso/1

【讨论】:

  • 非常感谢 horcrux 这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多