2

以下正则表达式是用 Python 方言编写的:

^(    )*#(\s+\S(.*\S)?)?$

谁能看到一个更好的方法来解决这个问题?对于那些不确定它在说什么的人:

  • 它匹配整行。
  • 这些行以四个空格的任意倍数开头。
  • 这些空格后面有一个井号标签。
  • 哈希标签之后没有任何内容或以下内容:
    • 哈希标签后至少有一个空格字符。
    • 一个非空白字符紧随其后。
    • 要么什么都没有,要么接下来会出现以下情况:
      • 后面是任意数量的字符。
      • 最后一个字符是非空白字符。

还能再简化吗?

^(    )*#(\s.*\S)?$
4

2 回答 2

5

重写正则表达式以增强可读性的一种方法(以减少计算连续空格的机会):

^( {4})*#(\s.*\S)?$

用@Noctis 的话来说,它缩短了编译器调试输出。

(\s.*\S)?获取程序(\s+\S(.*\S)?)?

\s+=>\s(\s)*

\S(.*\S)?=> \S\S.*\S =>(\S.*)?\S

(\s+\S(.*\S)?)?=> (\s(\s)*(\S.*)?\S)?=>(\s.*\S)?因为(\s)*(\S.*)?=>.*

于 2013-10-26T03:07:31.400 回答
4

您始终可以使用该re.VERBOSE标志并将您在此处给出的解释添加为注释。:)

于 2013-10-26T03:06:57.187 回答