regex - 捕获包含模式正则表达式的每个单词
问题描述
我正在尝试编写一个 sed 脚本来查找包含特定模式的每个单词,然后将所有包含该模式的单词添加到前面。例如:
foobarbaz barfoobaz barbazfoo barbaz
可能会变成:
quxfoobarbaz quxbarfoobaz quxbarbazfoo barbaz
我了解捕获组和反向引用的基础知识,但我仍然遇到麻烦。具体来说,我无法让它分别捕获每个完整的单词。
s/\(.*\)men\(.*\)/ not just the \1men\2, but the \1women\2 and \1children\2 too /
我尝试使用\s
, 作为许多网站推荐的空格,但 sed 将\s
其视为单独的字符\
和s
解决方案
如果每个单词中没有空格,它就可以正常工作。
echo "foobarbaz barfoobaz barbazfoo barbaz" | sed 's/\([^ ]*foo[^ ]*\)/qux\1/g'
推荐阅读
- typescript - eslint-loader failOnError 选项不适用于 ts-loader 和 webpack-dev-server
- python - 我在 python3 中不断收到此错误“TypeError:需要一个整数(获取类型 str)”
- mysql - 创建视图但出现错误“视图 SELECT 在 FROM 子句中包含子查询”
- ruby-on-rails - 如何将 id 添加到 Ruby on Rails 的选项中
- php - 无法与主机 smtp.domain.com 建立连接:stream_socket_client():
- python - Tinye MCE 和 Django:HTMLField 工具栏选项(管理员)
- ios - 在 iOS 中放大时 react-native-maps 覆盖图像消失
- r - 有没有办法显示组中的计数和平均值?
- javascript - 如何将扑克牌值链接到 React Native 中的图像?
- google-forms - 如何访问当前提交的 Google 表单调查?