如何使用正则表达式捕获括号内的单词?

时间:2019-01-22 02:06:02

标签: regex

我想找到以下方法

POST
GET
DELETE

来自:

[POST]
[GET]
[DELETE]

我当前的正则表达式是:

[A-Z\w+]

但是它不返回我需要的东西。我在做什么错了?

此外,请注意,对于每一行,括号内只有一个值,即POST,GET或DELETE。最后,这些方法位于日志文件中,该日志文件在“ []”(URL或rails helper方法)中也包含其他字符。我只需要获取POST,GET或DELETE。

2 个答案:

答案 0 :(得分:0)

我相信这样做\[([^]]+)\]才能捕获方括号内的所有内容。 \[([POST|GET|PUT|DELETE]]+)\]捕获特定的预定义单词。

答案 1 :(得分:0)

使用捕获组()提取转义的\[\]之间的值,
并定位所有[]而不是^结束\]一次或多次+的对象。

\[([^\]]+)\]

https://regex101.com/r/pYkYAp/1

如果您想将重点放在确切的单词上 POST GET等,而不要使用选项|

\[(POST|DELETE|GET)\]

https://regex101.com/r/pYkYAp/2/

如果您希望不那么挑剔,并且只想使用大写的 ,则比:

\[([A-Z]+)\]

https://regex101.com/r/pYkYAp/3/

如果您不需要捕获和完全匹配,则可以在(?<=…)之后使用正向后看和在(?=…)处使用正向后看:

(?<=\[)[A-Z]+(?=\])

https://regex101.com/r/pYkYAp/4/