亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何編寫 python 正則表達式來提取 su 命令中使用的用戶名?

如何編寫 python 正則表達式來提取 su 命令中使用的用戶名?

一只名叫tom的貓 2023-03-08 10:25:25
我有各種命令的列表su。所有命令都使用命令的完整路徑su。命令可能有也可能沒有用戶名,可能有也可能沒有選項-。在用戶名之后也可能有選項和參數,例如/usr/bin/su aa*or   /bin/su - squid *或/bin/su - mapr -c "/usr/bin/hadoop fs -mkdir /user/*"。這是我嘗試過的方法,但在遇到麻煩之前我并沒有走得太遠。for c in su_commands.all()[0:10]:   ...:     print(c.name)   ...:     m = re.search('/su\s*[-]\s*(\S*)', c.name).group(1)   ...:     print(m)   ...:     //bin/su - audituser.genaudituser.gen//usr/bin/su - hradmhradm/apps/su - capitalcapital/apps/su - cscdmcscdm/apps/su - invadminvadm/bib/su sapbridgTraceback (most recent call last):  File "/apps/sfo_rcecala/sfo_rcecala/env3/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3331, in run_code    exec(code_obj, self.user_global_ns, self.user_ns)  File "<ipython-input-39-788d11c0e2c2>", line 3, in <module>    m = re.search('/su\s*[-]\s*(\S*)', c.name).group(1)AttributeError: 'NoneType' object has no attribute 'group'我認為我的正則表達式中的 have[-]會使-可選的。謝謝巴爾馬爾。我已經更新了我的正則表達式,現在我更進一步了。for c in su_commands.all()[0:10]:   ...:     print(c.name)   ...:     m = re.search('/su\s*\-?\s*(\S*)', c.name).group(1)   ...:     print(m)   ...:     //bin/su - audituser.genaudituser.gen//usr/bin/su - hradmhradm/apps/su - capitalcapital/apps/su - cscdmcscdm/apps/su - invadminvadm/bib/su sapbridgsapbridg/bin//su - hdpapjpahdpapjpa/bin/su  oabifstg/bin/su  xxcconxxxcconx/bin/su  xxswaadmxxswaadm但如您所見,我錯過了用戶oabifstg。
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

使某些東西可選的語法是放在?它后面。方括號用于指定字符集,例如[abc]匹配ab, 或c。

嘗試這個。

m = re.search(r'/su\s+(?:-\s+)?(\S*)', c.name).group(1)

之后至少需要一個空格su,后面-跟空格的是可選組。

如果要在用戶名之前允許任意選項,請使用匹配-后跟零個或多個非空格字符的重復組。

m = re.search(r'/su\s+(?:-\S*\s+)*(\S*)', c.name).group(1)

我還使用了原始字符串,以便模塊處理所有轉義序列re。有關更多詳細信息,請參閱此內容。


查看完整回答
反對 回復 2023-03-08
  • 1 回答
  • 0 關注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號