Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式:如何从文本中查找和提取首字母缩略词以及首字母缩略词的相应定义?_Regex_Text Analysis_Acronym - Fatal编程技术网

Regex 正则表达式:如何从文本中查找和提取首字母缩略词以及首字母缩略词的相应定义?

Regex 正则表达式:如何从文本中查找和提取首字母缩略词以及首字母缩略词的相应定义?,regex,text-analysis,acronym,Regex,Text Analysis,Acronym,我想做一些像在这个问题中建议的事情——但在更一般的层面上: 输入示例: “在一组开创性的论文中,Feddersen和Pesendorfer(1996年,1999年),此后的FP,incorporate…被贴上了“摇摆选民的诅咒”,从现在开始SVC。该预测……是开始使用静态应用程序安全测试的最佳方法(SAST)工具..来自拉丁语ante meridiem(A.M.)意思是中午之前……” 结果: ['Feddersen and Pesendorfer','FP'] [‘摇摆选民的诅咒’、‘SVC’

我想做一些像在这个问题中建议的事情——但在更一般的层面上:

输入示例:

“在一组开创性的论文中,Feddersen和Pesendorfer(1996年,1999年),此后的FP,incorporate…被贴上了“摇摆选民的诅咒”,从现在开始SVC。该预测……是开始使用静态应用程序安全测试的最佳方法SAST)工具..来自拉丁语ante meridiemA.M.)意思是中午之前……”

结果:

  • ['Feddersen and Pesendorfer','FP']
  • [‘摇摆选民的诅咒’、‘SVC’]
  • [‘静态应用程序安全测试’、‘SAST’]
  • ['ante meridiem','A.M.]
  • 当然,首字母缩略词有许多可能的“信号”。我在下面列出了一些:

    • 括号:…(…)
    • ……以后
    • …从现在起
    • …在这之后
    • …被称为
    • ……随后
    • ……因此
    • ……从今以后
    • …以下简称
    • 等等
    也许有两个正则表达式是有益的;一个用于括号,另一个用于所有其他正则表达式,因为它们的结构差别很大

    只关注首字母缩写词,即忽略从声音导航和测距创建的声纳

    有可能对正则表达式进行这样的思考吗?如果有,你会怎么做 这是可能的。我首先定义所有描述一系列单词的单独规则,然后定义首字母缩略词(SOWFBAAD),然后将这些规则缝合在一个define语句中

    例如,如果要查找电子邮件地址,可以使用此符合Perl的正则表达式(PCRE),它首先定义RFC 5322中的所有规则,然后查找类似电子邮件地址的内容:

    (?x)
        (?(DEFINE)
    
            (?<addr_spec> (?&local_part) @ gbase\.tt )
            (?<local_part> (?&dot_atom) | (?&quoted_string) | (?&obs_local_part) )
            (?<domain> (?&dot_atom) | (?&domain_literal) | (?&obs_domain) )
            (?<domain_literal> (?&CFWS)? \[ (?: (?&FWS)? (?&dtext) )* (?&FWS)? \] (?&CFWS)? )
            (?<dtext> [\x21-\x5a] | [\x5e-\x7e] | (?&obs_dtext) )
            (?<quoted_pair> \\ (?: (?&VCHAR) | (?&WSP) ) | (?&obs_qp) )
            (?<dot_atom> (?&CFWS)? (?&dot_atom_text) (?&CFWS)? )
            (?<dot_atom_text> (?&atext) (?: \. (?&atext) )* )
            (?<atext> [a-zA-Z0-9!#$%&''*+/=?^_`{|}~-]+ )
            (?<atom> (?&CFWS)? (?&atext) (?&CFWS)? )
            (?<word> (?&atom) | (?&quoted_string) )
            (?<quoted_string> (?&CFWS)? "" (?: (?&FWS)? (?&qcontent) )* (?&FWS)? "" (?&CFWS)? )
            (?<qcontent> (?&qtext) | (?&quoted_pair) )
            (?<qtext> \x21 | [\x23-\x5b] | [\x5d-\x7e] | (?&obs_qtext) )
    
            # comments and whitespace
            (?<FWS> (?: (?&WSP)* \r\n )? (?&WSP)+ | (?&obs_FWS) )
            (?<CFWS> (?: (?&FWS)? (?&comment) )+ (?&FWS)? | (?&FWS) )
        #   (?<ccontent> (?&ctext) | (?&quoted_pair) )
            (?<ccontent> (?&ctext) | (?&quoted_pair) | (?&comment) )
            (?<ctext> [\x21-\x27] | [\x2a-\x5b] | [\x5d-\x7e] | (?&obs_ctext) )
    
            # obsolete tokens
            (?<obs_domain> (?&atom) (?: \. (?&atom) )* )
            (?<obs_local_part> (?&word) (?: \. (?&word) )* )
            (?<obs_dtext> (?&obs_NO_WS_CTL) | (?&quoted_pair) )
            (?<obs_qp> \\ (?: \x00 | (?&obs_NO_WS_CTL) | \n | \r ) )
            (?<obs_FWS> (?&WSP)+ (?: \r\n (?&WSP)+ )* )
            (?<obs_ctext> (?&obs_NO_WS_CTL) )
            (?<obs_qtext> (?&obs_NO_WS_CTL) )
            (?<obs_NO_WS_CTL> [\x01-\x08] | \x0b | \x0c | [\x0e-\x1f] | \x7f )
    
            # character class definitions
            (?<VCHAR> [\x21-\x7E] )
            (?<WSP> [ \t] )
        )
        ((?&addr_spec))
    
    (?x)
    (?(定义)
    (((&本地部分)@gbase\.tt)
    (?(?&dot_原子);(?"ed_字符串);(?&obs_局部部分))
    (?(?&dot_原子)|(?&domain_文字)|(?&obs_domain))
    (?(?&CFWS)?\[(?:(?&FWS)?(?&dtext))*(?&FWS)?\](?&CFWS)?)
    (?[\x21-\x5a]|[\x5e-\x7e]|(?&obs\u dtext))
    (?\ \(?:(?&VCHAR)|((?&WSP))|((?&obs\U qp))
    (?(?&CFWS)?(?&dot_原子_文本)(?&CFWS)?)
    (?(?&atext)(?:\(?&atext))*)
    (?[a-zA-Z0-9!#$%&'*+/=?^{124;}~-]+)
    (?(?&CFWS)?(?&atext)(?&CFWS)?)
    (?(?&atom)|(?"ed_字符串))
    (?(?&CFWS)?“”(?:(?&FWS)?(?&qcontent))*(?&FWS)?“”(?&CFWS)?)
    (?(?&qtext)|(?"ed_对))
    (?\x21 |[\x23-\x5b]|[\x5d-\x7e]|(?&obs\u qtext))
    #注释和空白
    ((?:(?&WSP)*\r\n)?(?&WSP)+|(?&obs_-FWS))
    (?(?:(?&FWS)?(?&comment))+(?&FWS)?|(?&FWS))
    #(?(?&ctext)|(?"ed_对))
    (?(?&ctext)|(?"ed|对)|(?&comment))
    (?[\x21-\x27]|[\x2a-\x5b]|[\x5d-\x7e]|(?&obs\ctext))
    #过时代币
    (?(?&原子)(?:\.(?&原子))*)
    (?(?&word)(?:\(?&word))*)
    ((?(?&obs_-NO_-WS_-CTL)(?"ed_-pair))
    (?\\(?:\x00 |)(?&obs\u NO\u WS\u CTL)\n\r))
    (?(?&WSP)+(?:\r\n(?&WSP)+*))
    ((((?&obs\U NO\U WS\U CTL))
    ((((?&obs\U NO\U WS\U CTL))
    (?[\x01-\x08]|\x0b |\x0c |[\x0e-\x1f]|\x7f)
    #字符类定义
    (?[\x21-\x7E])
    (?[\t])
    )
    ((?&addr_spec))
    
    当然,这个表达式确实使用了递归,这在许多风格的正则表达式中都不能很好地发挥作用。要解决这个问题,您可以简单地注释掉ccontent并取消注释另一个ccontent,前提是您接受表达式将不再找到递归注释

    然而
    单独将其构造为正则表达式可能会给您留下一个表达式,以后很难阅读、调试或修改。因此,您最好循环浏览SOWFBAAD定义列表。

    您可以得到这样的结果,但您需要确认它们确实是首字母缩略词。总之,有多少个单词,我指的是哪个can在首字母缩略词之前?