我有很多带有文字的页面,我必须检索特定的值。它不必100%准确,但我也不想要太多无效值。我正在寻找的值可以是文本块中的任何位置。我将提取的值与包含所有有效值的基线进行匹配以清理数据,但我当前的正则表达式是提取所有单词或者我可以使用的任何内容。
我目前正在将文本拆分为单词并将其与正则表达式匹配,但这几乎可以检索每个单词。最小字符数也是2,最大值是37.我在javascript中使用这个用于Brio Hyperion。
/^\S[A-Z0-9A-Z]{2,37}\S*$/
我应该使用什么正则表达式来检索这些值?
AEDDBO0023
AED02GS2330
AEBDG0233
GSOOG2345
INCG00522133
AESBOFGL2321
GSCO231145
示例文字:
随机文字不重要:随机文字不重要,随机文字不重要 重要::随机文字不重要'随机文字不重要随机 文字不重要随机文字不重要随机文字没有 importantRandom文本不重要随机文本不重要 仓库名称: AEDDBO0023 随机文本不重要随机文本没有 重要 AED02GS2330 随机文字不重要随机文字不重要随机文字不重要“随机文字不重要”随机 文字不重要随机文本不重要随机文本没有 importantRandom文本不重要随机文本不重要随机 文字不重要以下项目: AEBDG0233 GSOOG2345 INCG00522133 AESBOFGL2321 随机文本不重要随机文本不是 GSCO231145 importantRandom文本不重要随机文本不重要随机文本 不重要随机文本不重要随机文本不重要随机 文字不重要随机文本不重要随机文本没有 importantRandom文字并不重要
从OP的评论中添加:
{
var textBlock = ActiveDocument.Sections["Results"].Columns["Detailed Decription"].GetCell(j); // Split found host names in rows
try {
linesArray = IncDescription.toUpperCase().split ('\n');
} catch (e) {
Application.Alert(e.toString());
}
for (i = 0; i< linesArray.length; i++) { // match found strings to the hosts regular expression
splitArray = linesArray [i].split(' ');
for (k=0; k <splitArray.length; k++) {
if ( splitArray [k].match (/[a-zA-Z]{2,37}*[0-9]{1,}/g) !== null) {
try {}
答案 0 :(得分:0)
我会使用类似的东西:
/\b[A-Z]{4}[A-Z0-9]{1,32}[0-9]\b/
说明:
\b : word boundary
[A-Z]{4} : 4 letters
[ : begin character class
A-Z : any letter from A to Z
0-9 : any digit
] : end character class
{1,32} : from 1 to 32 times
[0-9] : a digit
\b : word boundary
如果你想与unicode兼容:
/[^\pL\pN]{4}\pL[\pL\pN]{1,32}\pN[^\pL\pN]/
答案 1 :(得分:0)
这应该是一个开始:/[a-zA-Z]{2,37}*[0-9]{1,}/g
在上面的示例文本中匹配
["AEDDBO0023", "AED02", "GS2330", "AEBDG0233", "GSOOG2345", "INCG00522133", "AESBOFGL2321", "GSCO231145"]
答案 2 :(得分:0)
答案 3 :(得分:-1)
尝试
/\b[A-Z]{4,}[0-9A-Z]*\d{4,}\b/
我假设这些字母只能是大写字母,并且最后至少有4个数字。中间的东西可以是字母和数字的任意组合。
编辑我可以从OP中理解(这并不多......)