获得regex‘读’字符和停在特定短语捕捉的最佳方式是什么?很多时候我都用过.*吗?.+呢?将不需要的字符传递到特定的字符串或标记,然后捕获。
我想阅读任何字符,直到我找到一个特定的短语或标签。我通常会做一些事情
date.*?<.*?>(\w+)<.*?>
从一个看起来像
datestuffstuffstuffstuff<tag>animal<tag>
这将在一个简单的例子中工作,但引擎在10K字符文本中丢失以匹配。当我到达抓捕的时候,我需要更具体的吗?Regex通俗易懂的英语:跳过字符直到你到达这个短语,然后捕捉。
发布于 2015-10-07 06:02:30
既然您在问如何解析纯文本,我可以建议使用否定字符类,即[^
+CHARACTERS_THAT_SHOULD_NOT_BE_MATCHED+]
.。
否定字符类是最有效的正则子模式。考虑一下
word one#word 2#more text
#(.*?)#
将采取18个步骤来找到匹配,而#(\[^#\]*)#
将在6个步骤中完成。
此外,默认情况下,.
不匹配换行符,您需要使用(?s)
、/s
或其他不同方式指定DOTALL模式。
如果您需要在两个或更多的必需字符之间匹配一些不必要的文本,那么您必须使用.*
/.*?
(有或没有dotall修饰符),或者--如果您需要最近的匹配--一个脾气暴躁的象征 (特别是,如果必须排除某些子字符串)。
https://stackoverflow.com/questions/32993435
复制相似问题