[英]How do you use a forward slash in a regex search?
我正在尝试使用正则表达式查找并替换我的react组件中注释之间的所有文本。
这是带有注释的react组件的示例:
<Text>{/*text1*/}hey hey hey{/*text1*/}</Text>
如果将{/*text1*/}
更改为{text1}
则可以替换文本。 问题是,每当我尝试将注释的/* */
部分添加到我的正则表达式中时,都会不断添加额外的反斜杠。
如果我从组件中的注释中删除了/ *和* /,那么下面的当前函数将起作用:
async function doIt(fileName, location, replacementText) {
let tempRegex = "(?<={" + location + "})(.*)(?={" + location + "})"
let regex = new RegExp(tempRegex)
await fs.readFile(path.join(__dirname, fileName), 'utf8', function (err, data) {
if (err) throw err
content = data
content = content.replace(regex, replacementText)
fs.writeFile(path.join(__dirname, fileName), content, 'utf8', function (err) {
if (err) throw err
console.log('FILE SAVED')
})
})
}
doIt('change.js', "text1", 'test test')
我的想法是将tempRegex更改为:
"(?<={/*" + location + "*/})(.*)(?={/*" + location + "*/})"
但它会不断添加其他字符,如下所示:
/(?<={\\/*textBox1*\\/})(.*)(?={\\/*textBox1*\\/})/
有没有一种方法可以添加正斜杠而不添加额外的反斜杠?
正斜杠/
是正则表达式中的特殊字符,因为它表示它们的开头和结尾。 如果您想在 RegExp
使用正斜杠,则必须将其转义。 这就是反斜杠的作用。
因此,此正则表达式无效:
/{//
鉴于此有效:
/{\//
我刚刚意识到我的问题是新的RegExp没有转义星号。 这是我的最终解决方案。 我必须在星号前面添加2个反斜杠才能正常工作。
export default function updateText(fileName, location, replacementText) {
let tempRegex = "(?<={/\\*" + location + "\\*/})(.*)(?={/\\*" + location + "\\*/})"
let regex = new RegExp(tempRegex)
fs.readFile(path.join(__dirname, fileName), 'utf8', function (err, data) {
if (err) throw err
content = data
content = content.replace(regex, replacementText)
fs.writeFile(path.join(__dirname, fileName), content, 'utf8', function (err) {
if (err) throw err
console.log('FILE SAVED')
})
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.