【问题标题】:preg_match find regex with or without first capital letterpreg_match 查找带或不带第一个大写字母的正则表达式
【发布时间】:2015-04-30 12:25:42
【问题描述】:

在我的项目中,我需要找到一个特殊的正则表达式,如果第一个字母是大写或小写,它就可以工作。以下是示例字符串:

user = username
User = username

现在,我尝试了这个正则表达式:

'/[^\n]user[^\n]*/'

但是如果第一个字母是大写的,这个表达式什么也找不到,所以我的问题是:

在这两种情况下找到包含“用户”的行的正确正则表达式是什么?

【问题讨论】:

  • 我不知道您希望在整个项目范围内完成的全部范围,所以我要问在这种情况下是否有必要使用正则表达式? user = username 是来自客户端的输入字符串吗?

标签: php regex string preg-match


【解决方案1】:

您可以使用以下正则表达式:

$re = "/^user.*$/mi"; 

demo

i 选项表示“忽略大小写”,m 表示“多行”,强制^$ 匹配行边界。 . 将匹配除换行符以外的任何字符(因为未启用单行模式)。

【讨论】:

  • 一个带有很好解释的正则表达式答案!你不会经常看到这个:)
  • 谢谢,这很好用,是否可以做类似的事情,但只输出“=”符号之后的字符串?我会尽快接受答案。
  • 能否提供样品?你的意思是:regex101.com/r/wN3fN9/1?随时更新那个“小提琴”。
  • sample 和上面一样,在这种情况下我需要它只输出“用户名”,而不是整行。
  • 我会使用这个正则表达式:^user\s*=\s*(.*)$,然后只获取捕获的组值。见regex101.com/r/wN3fN9/2
【解决方案2】:

在正则表达式中忽略我们应该使用 i 的情况 所以你可以使用下面的代码'/[^\n]user[^\n]*/i'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2021-08-01
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多