makefile的正则匹配字符串和数字
时间: 2024-04-24 11:26:06
浏览: 205
在 Makefile 中,你可以使用 `$(filter)` 函数来进行基本的字符串和数字的正则匹配。
以下是一个示例:
```makefile
strings := apple banana cherry
numbers := 123 456 789
filtered_strings := $(filter %a%,$(strings))
filtered_numbers := $(filter %2%,$(numbers))
@echo "Filtered strings: $(filtered_strings)"
@echo "Filtered numbers: $(filtered_numbers)"
在上述示例中,我们定义了一个字符串[列表](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083) `strings` 和一个数字列表 `numbers`。
然后,我们使用 `$(filter)` 函数来筛选出符合特定[正则表达式](https://geek.csdn.net/educolumn/b04e5fff38104b983e9ace05416bf01b?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)模式的字符串和数字。
在 `all` 目标规则中,我们打印出经过筛选的字符串和数字列表。
在示例中,我们使用 `%a%` 来匹配包含字母 "a" 的字符串,并使用 `%2%` 来匹配包含数字 "2" 的数字。你可以根据需要调整[正则表达式](https://geek.csdn.net/educolumn/b04e5fff38104b983e9ace05416bf01b?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)模式。
请注意,Makefile 中的字符串和数字匹配是基于模式匹配而不是[正则表达式](https://geek.csdn.net/educolumn/b04e5fff38104b983e9ace05416bf01b?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)。因此,你只能使用通配符 `%` 来进行简单的模式匹配,而无法使用复杂的[正则表达式](https://geek.csdn.net/educolumn/b04e5fff38104b983e9ace05416bf01b?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)语法。
希望这个示例能满足你的需求。如果需要更复杂的正则匹配操作,可能需要借助外部工具或脚本来实现。
相关问题
makefile读取txt当中字符串变量和数字变量
在 Makefile 中,你可以使用 `$(shell)` 函数来读取文本文件中的字符串变量和数字变量。下面是一个示例:
假设有一个名为 `variables.txt` 的文本文件,内容如下:
VAR1 = Hello
VAR2 = 42
```
makefile正则表达式
Makefile 中可以使用正则表达式进行模式匹配和替换。在 Makefile 的规则中,可以使用正则表达式来匹配目标、依赖和命令等。
以下是一些常见的正则表达式在 Makefile 中的应用示例:
1. 匹配文件名后缀:
# 匹配以 .c 结尾的文件
SRC := $(wildcard *.c)
```