regex - 如何使用正则表达式匹配波浪线分隔的数据

标签 regex notepad++ tilde

我有这样的数据:

~10~682423~15~Test Data~10~68276127~15~More Data~10~6813~15~Also Data~

我正在尝试使用 Notepad++ 查找标记 10 (682423、68276127、6813) 中的值并将其替换为零。我认为下面的语法会起作用,但它选择了我想要的文本的第一次出现和该行的其余部分,而不仅仅是我想要的文本 (~10~682423~,例如)。我还尝试了数十种在线搜索变体,但它们要么做同样的事情,要么不会返回任何结果。

~10~.*~

最佳答案

您可以使用:(?<=~10~)\d+(?=~)并替换为 0 .这使用环视来检查 ~10~在数字序列和 (?=~) 之前确保 ~遵循数字序列。如果任何字符可以在 ~10~ 之后字段,使用 (?<=~10~)[^~]+(?=~) .

~10~.*~ 的问题是*是贪婪的,所以它只是吞噬匹配任何字符和 ~ .

关于regex - 如何使用正则表达式匹配波浪线分隔的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61858904/

相关文章:

javascript - 如何使用正则表达式查找对象成员名称

notepad++ - 如何在 Notepad++ 中删除两个斜杠之间的一些数字

c++ - 宏中的波浪号 (~) 是什么意思?

javascript - 什么样的javascript数组使用波浪号~

regex - REGEX_EXTRACT_ALL在APACHE PIG中未返回正确的结果

python - Python中的正则表达式抓取特殊字符之前的所有文本

c# - 在 C# 中将字符串拆分为两个字符

regex - 在 Notepad++ 中每行的开头和结尾添加引号

python - 使用 Notepad++ 创建django函数时出现"unexpected indent"错误

python - 使用 python 正则表达式匹配文件名末尾的 "~"