使用Regex或Split从字符串消息中提取字符串[重复]

0qx6xfy6  于 2022-12-24  发布在  其他
关注(0)|答案(3)|浏览(163)
    • 此问题在此处已有答案**:

How can I get a substring located between 2 quotes?(3个答案)
3小时前关门了。
我有一个包含单引号的字符串。我想提取单引号之间的内容。下面是一个示例:

`VM Exception while processing transaction: reverted with custom error 'Nope("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266")'`

这是我在javascript中使用regex的尝试:

let re = new RegExp(/'([^']*)'/);
let result = re.exec(revert.message);
console.log(result);

输出:

[
  `'Nope("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266")'`,
  'Nope("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266")',
  index: 70,
  input: `VM Exception while processing transaction: reverted with custom error 'Nope("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266")'`,
  groups: undefined
]

理想情况下,我希望Nope("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266")在单引号示例中。我如何正确地解析出消息中的字符串?regex也适合这个吗?如果不适合,我可以考虑其他方法吗?我可以做string.split(),但第二种意见会有帮助。

ve7v8dk2

ve7v8dk21#

您可以对exec的结果使用下标([])运算符来获取实际的匹配组。
例如,此处:

// Make sure its found
if (result) {
    console.log(result[0]);
}
pieyvz9o

pieyvz9o2#

另一个具有查看功能的选项:

(?<=')[^']*(?=')

检查here演示。

bakd9h0s

bakd9h0s3#

若要提取示例字符串中单引号之间的内容,可以使用以下正则表达式:

/'([^']*)'/g

你也可以试试这个源代码:

let str = `VM Exception while processing transaction: reverted with custom error 'Nope("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266")'`;
let re = /'([^']*)'/g;
let result;
while ((result = re.exec(str)) !== null) {
  console.log(result[1]);
}

这将输出:* 否(“0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266”)*

相关问题