当前位置: 首页 > 知识库问答 >
问题:

正则表达式匹配不同数量的单词

陆啸
2023-03-14

软件-Adobe Professional XI

编程-用正则表达式匹配通配符的JavaScript

背景-我有多个带有标题栏的pdf图纸,使用java脚本,基于单词的位置添加数字签名字段(通过与regex匹配)。

目前正在测试,看看是否有文字出现在绘图标题块的修订版1中。

脚本搜索修订号1,后面是日期、标题(字数不同)和4组缩写。

数字1是静态的(日期、标题和首字母都是通配符,因为每个图形都不同)。

我使用正则表达式来匹配单词。

正则表达式的这一部分找到数字1和日期(这正在工作)。

^1\s[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}

正则表达式的其余部分与标题和首字母不匹配(这不起作用)

s\w+(\s+\w+){1,8}

如果有人能帮助正则表达式匹配单词和首字母,那将是最受欢迎的。

一旦正则表达式匹配工作,将在4组首字母的每个位置进行拆分,以便javascript可以在这些位置添加数字签名字段。

也可以帮助如何使用正则表达式拆分单词吗?

这是整个脚本(java脚本正在工作,仅正则表达式需要帮助)

numWords = this.getPageNumWords(0);
// number of words on page
// loop through the words on page
for (var j = 0; j < numWords-1; j++)
{ // get word pair to test 
    ckWords = this.getPageNthWord(0, j) + ' ' + this.getPageNthWord(0, j + 1); // test words 

    // example of word string
    // 1 26.05.16 THE REINFORCEMENT REVISED MM SB AE GM

    if (ckWords.match(/^1\s[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}\s\w+(\s+\w+){1,8}/))
    {
        console.println(ckWords);
    }
}

带有文本的标题栏的 pdf

共有2个答案

訾凯歌
2023-03-14

这和你要找的东西近吗?

// some string with variable spaces and variable number of title words
var words = '1    26.05.16  THE   REINFORCEMENT  REVISED    MM  SB   AE  GM';

// match for:
// possible spaces at the start
// a 1
// variable spaces
// a xx.xx.xx date
// variable spaces
// any number of words that are not the initials, separated by variable spaces
// variable spaces
// four initials, separated by variable spaces
// possible spaces at the end
var matches = words.match(/^\s*1\s+\d\d\.\d\d\.\d\d\s+((?:\w+\s+)+\w+)\s+([A-Z]{2})\s+([A-Z]{2})\s+([A-Z]{2})\s+([A-Z]{2})\s*$/);
console.log(matches);

// replace variable spaces in title with single spaces
console.log(matches[1]);
matches[1] = matches[1].replace(/\s+/g, ' ');
console.log(matches[1]);
赵渊
2023-03-14

将首字母添加到正则表达式的末尾,以便可以分别匹配它们。

ckWords = '1 26.05.16 THE REINFORCEMENT REVISED MM SB AE GM';

match = ckWords.match(/^1\s\d{1,2}\.\d{1,2}\.\d{2}\s\w+(?:\s+\w+){1,8}\s([A-Z]{2})\s([A-Z]{2})\s([A-Z]{2})\s([A-Z]{2})$/);
console.log(match);
 类似资料:
  • 问题内容: 我正在使用模块中的函数来匹配某些东西,并且一切正常。 现在,我需要找出我有多少场比赛。是否可以不两次遍历迭代器?(先找出计数然后是真正的迭代) 一些代码: 一切正常,我只需要在循环之前获取匹配数即可。 问题答案: 如果您知道需要所有匹配项,则可以使用该功能。它将返回所有匹配项的列表。然后,您可以只进行匹配次数。

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 我们得到了一些这样的内容:

  • 我有一个regex101正确工作的regex: 有2个匹配,如预期的。 现在我想用std的regex_token_iterator拆分相同的: 这可以很好地编译,但没有任何东西被打印到stdout。 我认为正则表达式必须以其他方式编写,你能指出我的错误吗?

  • 问题内容: 我知道可以匹配一个单词,然后使用其他工具(例如grep -v)将匹配项反转。但是,是否可以hede使用正则表达式来匹配不包含特定单词的行? 输入: 码: 所需的输出: 问题答案: 正则表达式不支持逆匹配的说法并不完全正确。您可以使用否定环顾模仿此行为: 上面的正则表达式将匹配任何不包含(sub)字符串’hede’的字符串或没有换行符的行。如前所述,这是不是正则表达式是“好”的(或应该做