如何使用正则表达式仅捕获具有特定格式的有效句子的第一个单词? [复制]
Posted
技术标签:
【中文标题】如何使用正则表达式仅捕获具有特定格式的有效句子的第一个单词? [复制]【英文标题】:How to capture only the first word of a valid sentence with a specific format with Regex? [duplicate] 【发布时间】:2020-01-07 14:48:19 【问题描述】:我有一些文本,其中有效行以"- "
开头,后跟一个句子。
我要捕获 是有效行上以小写字母开头的第一个单词
在下面的示例文本中,应仅捕获 "hello"
和 "happy"
,不 "Friday"
或 "monday"
或 "saturday"
- hello
- happy birthday
- Friday
# monday
saturday
到目前为止,我已经构建了这个Regex expression:-\s\b[a-z]+
,但它使用以下文字捕获"- "
:
【问题讨论】:
您需要将要提取的部分用一对捕获括号括起来,然后抓取matcher.group(1)
。只需like here。
/^-\s*?([a-z][a-zA-Z]*)/gm
应该这样做
@MonkeyZeus 还是用第一个单词捕获“-”
您应该花一些时间阅读捕获组。
【参考方案1】:
许多可能的解决方案之一可能是
^-\s+([a-z]\w+)
见a demo on regex101.com。
请注意,
Java
中的反斜杠需要转义,以便表达式变为:
^-\\s+([a-z]\\w+)
【讨论】:
这仍然使用捕获的单词捕获“-”? 匹配和捕获是有区别的。使用第一个捕获组。以上是关于如何使用正则表达式仅捕获具有特定格式的有效句子的第一个单词? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何编辑我的正则表达式,使其仅捕获(不包括)引号之间的子字符串?