尝试创建一个与左括号匹配的模式,并获取它与它遇到的下一个空间之间的所有内容。
我认为\[.*\s
会实现这一点,但它从第一个开始括号中获取所有内容。我怎么能告诉它在下一个空间打破?
答案 0 :(得分:7)
\[[^\s]*\s
.*
是一个贪婪的人,会吃掉所有东西,包括空格,直到最后一个空格字符。如果将其替换为\S*
或[^\s]*
,则它只会匹配除空白之外的零个或多个字符块。
可能需要屏蔽开口支架。如果用^ \ s否定\ s,表达式应该吃除空格之外的所有内容,然后是空格,这意味着直到第一个空格。
答案 1 :(得分:4)
您可以使用不情愿的限定符:
[.*?\s
或者匹配所有非空格字符:
[\S*\s
答案 2 :(得分:3)
使用此:
\[[^ ]*
这与左括号(\[
)匹配,然后与空格([^ ]
)之外的所有内容匹配零次或多次(*
)。
答案 3 :(得分:3)
我建议使用\[\S*(?=\s)
。
\[
:匹配[
个字符。\S*
:匹配0个或更多非空格字符。(?=\s)
:匹配空格字符,但不要将其包含在模式中。此功能称为零宽度正向前瞻断言,并确保仅在匹配后跟一个空格进行匹配,因此它在行尾不匹配。如果您不关心群组并希望包含最终空间,您可能会使用\[\S*\s
,但您必须明确说明哪些模式需要匹配,哪些不应该匹配。
答案 4 :(得分:1)
您希望将.
替换为[^\s]
,这将匹配“not space”而不是.
暗示的“任何”