Regex R-正则表达式中的高级字符串处理&引用;。格式();重复冗长

Regex R-正则表达式中的高级字符串处理&引用;。格式();重复冗长,regex,r,python-2.7,Regex,R,Python 2.7,Python是一种处理字符串的神奇语言。我已经创建了一些相当高级的正则表达式,我正在考虑将其移植到R。R最近添加了perl(?P)功能,但我不确定如何在R中最好地完成以下示例: import re pill_unit = r"(?:PILL|CAPSULE)" dosage = r""" (?P<pills> ½| \d+(?:\.\d+|)| \bONE\b)\s* {unit}""".format(unit = pill_unit) compiled_regex =

Python是一种处理字符串的神奇语言。我已经创建了一些相当高级的正则表达式,我正在考虑将其移植到R。R最近添加了perl(?P)功能,但我不确定如何在R中最好地完成以下示例:

import re

pill_unit = r"(?:PILL|CAPSULE)"
dosage = r"""
(?P<pills>
  ½|
  \d+(?:\.\d+|)|
  \bONE\b)\s*
{unit}""".format(unit = pill_unit)
compiled_regex = re.compile(dosage, re.VERBOSE)

print(compiled_regex.search("1 PILL A DAY").group("pills"))
重新导入
药丸|单位=r“(?:药丸|胶囊)”
剂量=r
(?P
½|
\d+(?:\。\d+|)|
\骨骼\b)\s*
{unit}”“。格式(单位=pill\u单位)
compiled_regex=re.compile(剂量,re.VERBOSE)
打印(已编译的正则表达式搜索(“每天1粒”)。组(“粒”)

与.format()相比,sprintf()似乎是一个笨拙的工具。在.format()中,我可以命名参数并知道它们最终位于正确的位置。

我编写了一个测试程序,将正则表达式格式化为可读代码。它也做群体分析,平衡和其他很多事情。发动机的其他特殊处理标志。以格式化的方式查看非常大的表达式是非常独特的

范例

在这些设备上,组处理标志处于启用状态

(?P<pills>
  ½|
  \d+(?:\.\d+|)|
  \bONE\b)\s*
(?:PILL|CAPSULE)
(?P
½|
\d+(?:\。\d+|)|
\骨骼\b)\s*
(?:药丸|胶囊)
进入

1    (?P<pills>
          ½
       |  
          \d+
          (?: \.\d+ | )
       |  
          \bONE\b
1    )
     \s*
     (?: PILL | CAPSULE )
(?P<pills>½|\d+(?:\.\d+|)|\bONE\b)\s*(?:PILL|CAPSULE)
1(?P
½
|  
\d+
(?:\。\d+|)
|  
\骨头\b
1    )
\*
(?:药丸|胶囊)
然后,进入

(?P<pills>½|\d+(?:\.\d+|)|\bONE\b)\s*(?:PILL|CAPSULE)
(?P½| \d+(?:\。\d+)\bONE\b)\s*(?:药丸|胶囊)
那么这个

1    (?P<pills>
          ½
       |  \d+
          (?: \.\d+ | )
       |  \bONE\b
1    )
     \s*
     (?: PILL | CAPSULE )
1(?P
½
|\d+
(?:\。\d+|)
|\bONE\b
1    )
\*
(?:药丸|胶囊)

我认为
(?Ppattern)
是基于Python或PCRE的命名捕获缓冲区。Perl将解析它,但是Perl使用
(?模式)或(?'NAME'模式)
语法。我对Python提供的其他特性很感兴趣,.format()和详细的替代方案,它们实际上使我的大型正则表达式可读性很好,它也处理注释吗?程序是在R中还是单独的包中?我认为编写自己的.format()函数应该非常简单,但让我惊讶的是,默认情况下没有.Hi Max.它使用自然发生的换行符或heruritics的可选覆盖处理注释。它解析正则表达式并在格式化中应用启发式。这不是一件小事。在理想状态下,它是一个具有多个复选框选项的独立图形界面程序。现在大约有15个可选状态集中在一个关注分组(所有分组构造)的核心状态上。压缩、阈值、引擎,所有这些都是为了适应视觉结构——这是非常主观的。我可能会很快提供免费的5-10美元的捐赠软件。我想在它充实的时候授权二进制文件。它现在的能力非常强大,将其整合是另一回事。我还没有对它进行第一次重构。谢谢你的邀请。