如何使用 Python 中的 re 模块实现此 $letters(*)
How to Achieve this $letters(*) with re Module in Python
我是 Regex 的初学者,如果有人对学习更多关于 re 模块的好地方有建议,我将不胜感激。
至于我的问题,基本上我是在用它来寻找类似这样的东西:
$letters(content)
在$和字母
之间没有\s或\t
字母是 UPPER 或 LOWER 或 _ 或 数字(但不是开始)
可能在字母和(
之间的\s或\t
必须以 )
结尾
至于内容:
- 可以有:UPPERCASE,LOWERCAE,DIGIT,$ letter2(..), 'word', "word", , , +-*/%! , .
我猜你可以把它想象成在这种情况下的函数调用。
简而言之,我怎样才能找到这样的原型:
$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 可能会派上用场。
我是 Regex 的初学者,如果有人对学习更多关于 re 模块的好地方有建议,我将不胜感激。
至于我的问题,基本上我是在用它来寻找类似这样的东西:
$letters(content)
在$和字母
之间没有\s或\t字母是 UPPER 或 LOWER 或 _ 或 数字(但不是开始)
可能在字母和(
之间的\s或\t必须以 )
结尾
至于内容:
- 可以有:UPPERCASE,LOWERCAE,DIGIT,$ letter2(..), 'word', "word", , , +-*/%! , .
我猜你可以把它想象成在这种情况下的函数调用。
简而言之,我怎样才能找到这样的原型:
$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 可能会派上用场。