1

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"))

sprintf() 与 .format() 相比显得笨拙,我可以在其中命名参数并知道它们最终出现在正确的位置。

4

1 回答 1

0

我编写了一个将正则表达式格式化为可读代码的 beta 程序。它还进行组分析、平衡和许多其他事情。引擎的其他特殊处理标志。以格式化的方式查看非常大的表达式真的很独特。

例子

在这些上,组处理标志打开

(?P<pills>
  ½|
  \d+(?:\.\d+|)|
  \bONE\b)\s*
(?:PILL|CAPSULE)

进入

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

然后,进入

(?P<pills>½|\d+(?:\.\d+|)|\bONE\b)\s*(?:PILL|CAPSULE)

那么这个

1    (?P<pills>
          ½
       |  \d+
          (?: \.\d+ | )
       |  \bONE\b
1    )
     \s*
     (?: PILL | CAPSULE )
于 2012-07-10T22:54:43.710 回答