如何使用 Python 中的 re 模块实现此 $letters(*)

How to Achieve this $letters(*) with re Module in Python

我是 Regex 的初学者,如果有人对学习更多关于 re 模块的好地方有建议,我将不胜感激。

至于我的问题,基本上我是在用它来寻找类似这样的东西:

$letters(content)

至于内容

我猜你可以把它想象成在这种情况下的函数调用。

简而言之,我怎样才能找到这样的原型:

$Operation(10, $l_shift_byte($random(20)), "addition")

$MessageBox(0, "Hello There Bug Boi !\nYour Lucky Number is : "+ $toString((10 - $random(20))), MB_OK)

------------ [编辑/更新]----------

我试过的(来自 Stefan 所说的):

^(\s+$|$)[A-Za-z_]+(.*)

可以正常工作,但只要 ( .. ) 中没有 \n 匹配停止于 \n 的不工作情况示例:

$operation( 10, $l_shift_byte($random(20)), "\naddition")

也一直在弄乱它并得到了这个:

^(\s+$[A-Za-z_]+|$[A-Za-z_]+)[0-9A-Za-z_]+(\s+\(|\()[\w\W]+(\)|\)\s)$

这也没有按预期工作,例如,如果我尝试匹配这个:

$ThisIsATest() $operatio8n_s ( 10, $l_shift_byte($random(20)), " \naddition")$quit()

它 Returns 一切,因为它以 $acceptable_ch4ars 开头(...并以 ) 结尾,wherase 它应该 returns :

[
    '$ThisIsATest()',
    '$operatio8n_s   ( 10, $l_shift_byte($random(20)), " \naddition")',
    '$quit()'
]

提前致谢!

模块的文档始终是一个不错的起点 re

针对您的情况,可能的正则表达式是:

^$[A-Za-z]+\(.*\)

这会找到您的两个示例字符串。

  • ^:匹配字符串的开头(您可能想删除它)
  • $:匹配$,注意使用\
  • 转义
  • [A-Za-z]+:匹配1个或多个小写或大写字母
  • \(\):匹配括号
  • .*: 匹配除换行符以外的所有内容0次或更多次

说到正则表达式,online regex tester 可能会派上用场。