当字符串存在或字符串不存在时正则表达式匹配

时间:2017-06-27 15:41:51

标签: php regex

当字符串存在或字符串不存在时,我正在尝试匹配 在以下内容中:

username test privilege 10 secret 0
username cisc privilege 15 password secret
username cisco privilege 10 secret 

我需要找到任何“用户名cisco”实例并匹配,如果根本不存在“用户名”则匹配。这是因为我们的路由器/交换机配置文件要么默认使用cisco,要么根本没有用户名。

到目前为止,我已经尝试过:

(?s)u\w{7} cisco|^((?!u\w{7}).)*$

(?s)(u\w{7}) cisco|^[^username]$

(?s)(u\w{7}) cisco|^[^\1]$

“|”之后的正则表达式评估为“不匹配”。如果不存在“用户名”,我需要它匹配(在我的情况下匹配将是失败)。我觉得这是一种外观或外观修复,但我无法正确理解语法。

提前致谢

在此处工作:https://regex101.com/r/PpDj3y/7

1 个答案:

答案 0 :(得分:0)

您可以将此正则表达式用于替换和否定前瞻:

/^(?!.*username).+|username cisco/m

RegEx分手:

  • ^ - 开始
  • 如果行包含,
  • (?!.*username)>_是一个负面预测断言失败 username,因此匹配没有username的行。
  • | - 或
  • username cisco - 匹配文字文字username cisco

RegEx Demo