regex - 我想在另一个字符串模式前面找到一些字符串,怎么办?

标签 regex linux bash shell

我想使用 bash shell 拆分字符串,如:

Calcipotriol - Daivonex Cream 50mcg/1g 30 g [1]
Aspirin - DBL Aspirin 100mg [1] tablet

我想获得品牌名称“Davionex Cream”和“DBL Aspirin” 我想获取parttern前面的名字 ***mg or ***mcg or ***g

怎么做?

最佳答案

如果您的示例输入具有代表性,awk 可能会提供最简单的解决方案:

awk -F'- | [0-9]+(mc?)?g' '{ print $2 }' <<'EOF'
Calcipotriol - Daivonex Cream 50mcg/1g 30 g [1]
Aspirin - DBL Aspirin 100mg [1] tablet
Foo - Foo Bar 22g [1] other
EOF

产量:

Daivonex Cream
DBL Aspirin
Foo Bar

关于regex - 我想在另一个字符串模式前面找到一些字符串,怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42058416/

相关文章:

c - 如何仅使用 x 和 y 位置更改 RGB 值

linux - 在 ubuntu 上运行 bash 主机脚本时遇到问题

bash - 两个进程读写同一个文件是否需要lockfile

javascript - 如何使用正则表达式来测试特定的小数?

sql - PostgreSQL 中的字符串匹配

mysql - 将简单的正则表达式模式应用于 SQL 查询

regex - Vi 编辑器模式匹配

javascript - 将 JS RegExp 对象转换为 Java 中的 Pattern 对象

linux - Awk、颜色和音频

linux - 无法将密码传递给 su