RegEx 基于字符串结果抓取信息
Posted
技术标签:
【中文标题】RegEx 基于字符串结果抓取信息【英文标题】:RegEx grabbing information based on string results 【发布时间】:2018-09-27 22:51:34 【问题描述】:我正在尝试从数据列表中获取用户名。数据以一种奇怪的格式保存,其中 3 个字符整数组成类似于下一个字段。在下面的数据中:
数据
129ABCDIEN ABCDHERS ABCDIT UABCU000 212 113P.O. BOX 106000 212 1182920
LAKEABCD AVE.000 212 126ST. JOSEPH, MI 41234-0132000 217 114(123) 983-
12340000123 207 109PAGE 10000265 134From: 7/01/00 To:
7/31/000000293 110Account #:123 1041106000 265 121Tax ID #: 123-12-1234000
212 118SARITEIO SARICO JR000 212
我要选择
SARITEIO SARICO JR
数据中的常数是 TAX ID#: [21 character] 后跟 '000 212 ' 和名称的字符数。在本例中为 18 个字符。
,---- Normal String
|.,---- number of characters
||| |- End of the string
118SARITEIO SARICO JR000
目前我有字符数的选择,但我不确定如何重用选择来选择下一个变量
当前正则表达式:
/Tax ID #: .20(..)
我是 RegEx 的新手,所以任何正确方向的观点都会有所帮助。
我还可以使用 C# 中的任何功能。
【问题讨论】:
尝试Tax ID.18(?:\s*\d+)*((?i)[a-z]+(?:\s*[a-z]+)*)
并访问第一个捕获组
@revo 太棒了,这行得通。您能在下面回答并解释这是如何工作的吗?
【参考方案1】:
按照您的规则,将有一个简单的正则表达式来匹配主题字符串中的所需模式:
Tax ID.18\s*\d3(?:\s*\d+)*((?i)[a-z]+(?:\s[a-z]+)*)
匹配敏感的Tax ID
后跟匹配 18 个字符(换行除外,因为我不确定您的数据是否包含换行)。它随后匹配可选的空格(包括换行符)和精确的3
数字,后跟可选的类似模式。接下来将匹配仅包含英文字母的单词序列。这个被捕获并设置了不区分大小写的标志(?i)
。
您只需要获得对第一个捕获组的访问权限。
Live demo
【讨论】:
以上是关于RegEx 基于字符串结果抓取信息的主要内容,如果未能解决你的问题,请参考以下文章