发布
社区首页 >问答首页 >用于编辑字符串中的多个值的正则表达式

用于编辑字符串中的多个值的正则表达式
EN

Stack Overflow用户
提问于 2021-08-19 17:34:04
回答 4查看 83关注 0票数 0

我试图用Javascript中的正则表达式来编辑一些信息。使用下面的regex,我可以替换值的一部分。

编辑

原始字符串:

mysql --user=USER_NAME --host=DB_HOST --database=SCHEMA -p -e 'SELECT

表达方式:

text.replace(/(.*--user=)(\s*)([^]*)/, '$1XX$2')

输出:

mysql --user=XX

不过,我希望产出如下:

mysql --user=XX --host=XXXXXX --database=XXXX -p -e 'SELECT

有人能帮我用正则表达式来实现这一点吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-08-19 17:48:42

如果格式与键值部件之间的单个空格保持不变,键以--开头,替换时有XX,则可以匹配模式并捕获组1中的键值部分。

代码语言:javascript
代码运行次数:0
复制
\bmysql (--\w+=\w+(?: --\w+=\w+)*)

regex演示

在替换中,在空格上拆分,并将=后的最后一部分替换为XX。

代码语言:javascript
代码运行次数:0
复制
const s = "mysql --user=USER_NAME --host=DB_HOST --database=SCHEMA";
const regex = /\bmysql (--[^\s=]+=[^\s=]+(?: --[^\s=]+=[^\s=]+)*)/;
const result = s.replace(
  regex,
  (_, g1) => "mysql " + g1
  .split(' ')
  .map(s => s.split('=')[0] + "=XX")
  .join(' ')
);
console.log(result);

在查找过程中使用无限量词的示例

(注意到,如果这是为了安全性,用单个X替换每个字符可以给出字符串长度的提示)

代码语言:javascript
代码运行次数:0
复制
(?<=\bmysql(?: --[^\s=]+=[^\s=]+)* --[^\s=]+=)[^\s=]+

Regex演示

代码语言:javascript
代码运行次数:0
复制
const s = "mysql --user=USER_NAME --host=DB_HOST --database=SCHEMA";
const regex = /(?<=\bmysql(?: --[^\s=]+=[^\s=]+)* --[^\s=]+=[^\s=]*)[^\s=]/g;
const result = s.replace(regex, "X");

console.log(result);

票数 2
EN

Stack Overflow用户

发布于 2021-08-19 17:59:40

一个简单得多的解决方案,只需一个Regex替换就可以实现您想要的目标,其模式如下:

代码语言:javascript
代码运行次数:0
复制
(?<=--[a-zA-Z0-9]*=)([^ ]*)

代码语言:javascript
代码运行次数:0
复制
const pattern = /(?<=--[a-zA-Z0-9]*=)([^ ]*)/g
const command= "mysql --user=USER_NAME --host=DB_HOST --database=SCHEMA"

console.log(command.replace(pattern, "XX"))

票数 0
EN

Stack Overflow用户

发布于 2021-08-19 18:02:59

如果X的数量不重要,那么这是短而甜蜜的:

代码语言:javascript
代码运行次数:0
复制
const str = 'mysql --user=USER_NAME --host=DB_HOST --database=SCHEMA';
const newStr = str.replace(/(?<=--\w+=)\w+/g, 'XX');
console.log(newStr);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68852322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档