python - 正则表达式替换元素,除非在同一行和匹配之前有另一个匹配
问题描述
我正在做一些工作,重写我公司一些用户的 sql 查询。我们为重写这些查询所做的其中一件事是将.
被任何类型的空格包围的 's替换为.
被无空格包围的 a(使用简单的正则表达式\s*\.\s*
)。
但是,我遇到了一个问题,其中传入的查询包含如下评论:
)
, wcr AS -- hello I am a comment that ends in a period.
(
然后将其格式化如下,这会使查询失败。
)
, wcr AS -- hello I am a comment that ends in a period.(
我想不出任何正则表达式可以进行我正在寻找的正确替换 - 也就是说,只有在同一行--
之前没有空格的情况下,才将空格包围的句点替换为不被空格包围的句点。.
任何帮助将不胜感激!
解决方案
看起来您想要.
替换 a 周围的空格或制表符,但不会认为\n
是这样的空格。 \s
全部[ \t\n\r\f\v]
在 Python 中。
您可以替换[ \t]*\.[ \t]*
(两边的零个或多个空格或制表符),只需.
推荐阅读
- python - 时间数据 '07-18-2018 09:35AM PDT' 与格式 '%m-%d-%Y %I:%M%p %Z' 不匹配(匹配)
- reactjs - 在 React 中有条件地执行 useContext
- iphone - HTML 媒体查询不适用于 iPhone 11
- angular - 如何更改 ngx-daterangepicker-material 的下拉日历的样式并获取输入框以手动输入日期范围
- git - GIT远程白/黑列表提交源URL/ip
- android - 有不同的 admob ID 和不同的 Google Play ID?
- django-models - 如果用户选择“保存”按钮,则 Django save() 表单,如果用户选择“计算”按钮,则保存 (commit=false)
- microsoft-graph-api - 如何使用 com.microsoft.graph.microsoft-graph 登录并获取个人帐户的 Microsoft Graph API 的访问令牌?
- excel - exe上的多次运行和数据输入
- javascript - 单击for循环生成的链接列表中的链接时,选中相应的复选框而不是第一个复选框