【问题标题】:Regular expression matching hashtag, whitespace then characters正则表达式匹配主题标签,空格然后字符
【发布时间】:2014-01-28 11:16:26
【问题描述】:

好的,所以我一直在阅读正则表达式,它们很有趣!

我一直在研究匹配 # 54jsfjk# ffskkkkkkkkkkkkkkkkk884587923572957 之类的字符串

以下内容是否足够:/# \w*/i

我试图替换的字符串在一行中(后​​面还有更多行),所以我猜匹配后面的所有内容都不好。

会使用^$ 只选择单行吗?

我正在使用的文件看起来像这样:

HEADER

# stringthatsreplaced

OTHER HEADER
- Stuff
- More Stuff

ANOTHER HEADER
- Even more stuff
- Last stuff

【问题讨论】:

  • 更好地使用锚点:'/^# \w+$/'
  • 是的,这就是我现在在代码中实现的 :)

标签: php regex


【解决方案1】:

如果要使用锚点,还需要使用多行模式:

/^# \w*$/m

*正如 Robin 在评论中正确指出的那样,这里不需要不区分大小写的标志,因为 \w 已经不区分大小写。使用它并没有什么坏处,但它在这个特定的正则表达式中没有做任何事情。

否则,^$ 将仅匹配 文件/文本块(不是行)的开头,$ 将仅匹配文件/文本的末尾块。

我不确定您是否也可以使用空格或其他字符,但如果您这样做,则需要使用\w* 以外的其他字符。 .* 应该可以很好地匹配以 # 开头的整行:

/^# .*$/m

【讨论】:

  • 这两种解决方案都不需要i 标志,\w 代表[a-zA-Z0-1]. 可以匹配任何内容。
  • @Robin Lol,我真傻,是的,在这种情况下不需要它们。顺便说一句,\w 代表[a-zA-Z0-9_]
猜你喜欢
  • 2022-06-24
  • 1970-01-01
  • 2014-12-11
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多