javascript - Javascript 正则表达式空间或
问题描述
我创建了这个 javascript 正则表达式
(?<=\s|^|\.)[^ ]+\(
这是我的正则表达式小提琴。我正在测试的线路是:
a bcde(
a bc.de(
bc(
而不是在第 2 行匹配
bc.de(
我只想得到
.de(
解决方案
您可以使用
(?<=[\s.]|^)[^\s.]+\(
请参阅正则表达式演示。如果您不想匹配任何空格,请使用常规空格:
(?<=[ .]|^)[^ .]+\(
详情:
(?<=[\s.]|^)
- 需要空格、字符串开头或 a.
立即出现在当前位置左侧的正向回溯[^\s.]+
- 除空格和点之外的任何一个或多个字符\(
- 一个(
字符。
请注意,在这里使用消费模式会好得多,而不是依赖lookbehind。您可以匹配所有直到第一个点,或者如果没有点,则匹配第一个空格或字符串的开头,然后是除空格之外的任何一个或多个字符,直到一个(
字符。这里的重点是您需要捕获需要提取的模式部分:
const regex = /(?:^[^.\r\n]*\.|\s|^)([^ (]+)\(/;
const texts = ["a bcde(", "a bc.de(", "bc("];
for (const text of texts) {
console.log(text, '=>', text.match(regex)?.[1]);
}
推荐阅读
- python - 如何避免使用 pandas to_datetime 方法获取 SettingWithCopyWarning
- python - 将数据框的“Bump Instance”列拆分为多行,这样一行中只保留一个值
- python - 输入带有比较运算符的字符串,并在数组索引上执行比较
- python - AttributeError:模块“tf_util”没有属性“conv2d”
- html - DOMException 错误:Google Drive 是否仍支持带有 /preview 的嵌入链接?
- conv-neural-network - CNN 和批量大小
- firebase - 如何在 Flutter 中从 Firebase 获取另一个用户 ID?
- python - 使用堆栈检查 Python 中用户输入的任何不平衡括号
- elasticsearch - Elasticsearch:跨多个索引/别名的全局搜索
- python - 如何使 message.channel.send 命令需要来自同一个库的两个单词?(Python 和 Discord.py)