regex - 有没有办法在正则表达式中的模式之前选择字符串?

标签 regex

我想从下面的行中提取These are words before hashtag:

* These are words before hashtag  #work/abc/xyz/123

我试过 \#.*,它会突出显示 #hashtag 之后的所有内容。如何使用单个正则表达式语句选择主题标签前的词?

最佳答案

您可以为 # 之前的字符使用捕获组,并匹配可选空格后跟 #。

^([^#\r\n]+?)[^\S\r\n]*#

模式匹配:

  • ^ 字符串开始

  • ( 捕获组 1

    • [^#\r\n]+? 匹配 1+ 次(非贪婪)除 # 或换行符之外的任何字符
  • ) 关闭第 1 组

  • [^\S\r\n]* 匹配不带换行符的可选空格

  • # 按字面匹配(注意你不必转义 \#

Regex demo

或者向前看:

^[^#\r\n]+?(?=[^\S\r\n]*#)

Regex demo

关于regex - 有没有办法在正则表达式中的模式之前选择字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68878249/

相关文章:

regex - VIM 搜索/替换 2 个括号或列之间的空格

regex - 跳过结束句点的 URL 正则表达式

regex - 正则表达式中的问题

regex - 使用由制表符分隔的正则表达式从指定字符串中提取单词

java - 带有 "or"运算符的正则表达式多个字符串

sql - 在 SQL 中选择具有与输入匹配的正则表达式值的行?

regex - SAS 正则表达式匹配 1-3 位数字

regex - Gorilla Mux Regex 用于范围和预定义选项之间的数字

python - 使用正则表达式查找多次出现的字符

Java正则表达式删除NULL字符串