我需要一些RegEx模式的指导

时间:2017-11-08 15:27:36

标签: regex

我需要测试一些字符串以查看它们是否与表达式匹配,但我并不熟悉RegEx。寻找模式应该是什么的一些帮助。 以下是一些字符串以及我希望他们将如何测试:

TEIJB502 -OK
TT3010 -OK
TT3110 -OK
TT692A -FAIL
ZT60101 -OK
AT1 -OK
AT101A -FAIL
AT101B -FAIL
AT1786A -FAIL
AT1786B -FAIL

换句话说,根据末尾是否存在后缀来传递/失败。

然后我需要运行一个RegEx并传递上面失败的那些,并且失败那些通过的。

我知道这听起来适得其反,但我需要一种方法来确定如何将每个字符串解析为表的单独列。 IE:

Type    Number    Suffix
TEIJB    502
TT       3010
TT       692       A

2 个答案:

答案 0 :(得分:0)

正则表达式的频繁谬误是认为当多个更清晰,更简洁时,需要使用单个正则表达式。在这种情况下,恰恰相反:一个相当简单的正则表达式可以非常有效地分离列。

如何阅读捕获组取决于您所使用的语言,但捕获组可用于支持正则表达式的所有语言。使用:

^([A-Z]+)(\d+)([A-Z])?$

答案 1 :(得分:0)

仅查看上面的示例:

TEIJB502 -OK
TT3010 -OK
TT3110 -OK
TT692A -FAIL
ZT60101 -OK
AT1 -OK
AT101A -FAIL
AT101B -FAIL
AT1786A -FAIL
AT1786B -FAIL

我在Windows 10 PC上的Notepad ++中执行了以下操作:

运行Notepad ++;

按ctrl + h;和

确保处于正则表达式模式

Find what: (^\D+)(\d{1,5})(\D)

然后

Replace with: \1\t\2\t\3\t

我相信你会自己调整一下。这就是我自己开始尝试你的例子的方法。

我的方法是我会捕获组,保留它们并在所有组之间插入一个标签。

我正在寻找(^\D+)开头的非数字字符。这是我的第一个捕获组。

我正在寻找第二个捕获组中带有(\d{1,5}的数字。这是告诉Notepad ++我正在寻找长度为1到5位的数字。

我正在使用(\D)在最后一个捕获组中再次查找非数字字符。这是为了在最后找到你的后缀。

替换为模式仅告知保留捕获组\1 \2 \3,但我在它们之间插入了一个标签\t。因此\1\t\2\t\3\t

你的'找到什么'模式可以而且应该比我的更通用。希望我能为你提供一些帮助。

此致 微米。

相关问题