正则表达式仅在给定条件下获取大括号之间的所有内容(包括大括号)
Regex to get everything between and including curly braces only if a given condition
你好,我正在尝试创建一个正则表达式,它将获取 和 之间的所有内容,包括 花括号 only 如果大括号之间的字符串 以 # 开始 并且如果后面有一个 \n 右大括号}
我以下面的字符串为例 -
## Markdown Syntax {#markdown-syntax}\n\n (lorem ipsum test).\n\n## Headers {#headers}\n\n function HelloCodeTitle(props) {return <h1>Hello, {props.name}</h1>; } {2}
在这个例子中,我希望从上面的字符串中提取 {#markdown-syntax}
和 {#headers}
并将它们替换为空的 space ''
我已经写了 this regex 但这也抢了 {return <h1>Hello, {props.name}
和 {2}
我不想要的。我只想抓住 {#markdown-syntax}
和 {#headers}
(包括大括号)作为大括号 starts 和 # 之间的字符串和\n 在 右 花括号 }
之后
使用 match()
和适当的模式:
var input = "## Markdown Syntax {#markdown-syntax}\n\n (lorem ipsum test).\n\n## Headers {#headers}\n\n function HelloCodeTitle(props) {return <h1>Hello, {props.name}</h1>; } {2}";
var tags = input.match(/\{#.*?\}(?=\n)/g, input);
console.log(tags);
上面使用的正则表达式模式表示:
\{ match opening {
# match #
.*? match all content up the first
\} closing }
(?=\n) assert that what follows is a newline character
如果您想删除这些标签,请使用replace
相同的模式:
var input = "## Markdown Syntax {#markdown-syntax}\n\n (lorem ipsum test).\n\n## Headers {#headers}\n\n function HelloCodeTitle(props) {return <h1>Hello, {props.name}</h1>; } {2}";
var output = input.replace(/\s*\{#.*?\}(?=\n)/g, " ").trim();
console.log(output);
你好,我正在尝试创建一个正则表达式,它将获取 和 之间的所有内容,包括 花括号 only 如果大括号之间的字符串 以 # 开始 并且如果后面有一个 \n 右大括号}
我以下面的字符串为例 -
## Markdown Syntax {#markdown-syntax}\n\n (lorem ipsum test).\n\n## Headers {#headers}\n\n function HelloCodeTitle(props) {return <h1>Hello, {props.name}</h1>; } {2}
在这个例子中,我希望从上面的字符串中提取 {#markdown-syntax}
和 {#headers}
并将它们替换为空的 space ''
我已经写了 this regex 但这也抢了 {return <h1>Hello, {props.name}
和 {2}
我不想要的。我只想抓住 {#markdown-syntax}
和 {#headers}
(包括大括号)作为大括号 starts 和 # 之间的字符串和\n 在 右 花括号 }
使用 match()
和适当的模式:
var input = "## Markdown Syntax {#markdown-syntax}\n\n (lorem ipsum test).\n\n## Headers {#headers}\n\n function HelloCodeTitle(props) {return <h1>Hello, {props.name}</h1>; } {2}";
var tags = input.match(/\{#.*?\}(?=\n)/g, input);
console.log(tags);
上面使用的正则表达式模式表示:
\{ match opening {
# match #
.*? match all content up the first
\} closing }
(?=\n) assert that what follows is a newline character
如果您想删除这些标签,请使用replace
相同的模式:
var input = "## Markdown Syntax {#markdown-syntax}\n\n (lorem ipsum test).\n\n## Headers {#headers}\n\n function HelloCodeTitle(props) {return <h1>Hello, {props.name}</h1>; } {2}";
var output = input.replace(/\s*\{#.*?\}(?=\n)/g, " ").trim();
console.log(output);