javascript - 正则表达式相关的混淆
问题描述
我想使用 javascript 中使用的正则表达式从以下字符串中提取mkghj.bmg和pp.kp
avb@gh.lk mkghj.bmg ,,,,fsdsdf.fdfd pllk.kp sdfsdf.bb,,,, pp.kp
,,,, 中包含的所有内容都需要忽略。,,,, 可能有多个实例,但它们总是会在字符串中出现偶数次(不出现也是可能的)。
此外,avb@gh.lk 有一个 @ 符号,因此需要忽略它
我想我正在寻找的规则是 - 如果有一个点 (.) 向前看,向后看:-
- 如果点包含在 ,,, 中,则忽略它
- 如果点前面有一个@,点和@之间没有空格,则忽略它
- 在所有其他情况下,在点的任一侧捕获一组完整的字符(直到遇到空格)
我想出了这个正则表达式,但它没有帮助
[^\, ]+([^@ \,]+\w+)[^\, ]+
解决方案
一般来说,这是(注意捕获组):
not_this | neither_this_nor_this | (but_this_interesting_stuff)
对于您的具体示例,这可能是
,,,,.*?,,,,|\S+@\S+|(\S+)
您需要检查组 1 的存在,请参阅regex101.com 上的演示。
在
JS
这将是:
var myString = "avb@gh.lk mkghj.bmg ,,,,fsdsdf.fdfd pllk.kp sdfsdf.bb,,,, pp.kp";
var myRegexp = /,,,,.*?,,,,|\S+@\S+|(\S+)/g;
match = myRegexp.exec(myString);
while (match != null) {
if (typeof(match[1]) != 'undefined') {
console.log(match[1]);
}
match = myRegexp.exec(myString);
}
推荐阅读
- r - 在 ggplot2 饼图中移动标签
- node.js - 无法从 git bash 运行节点
- python - 查找每个 Sequence_ID 的最大频率
- azure - 如何授权服务使用 Azure Active Directory 调用 API?
- javascript - 如何正确地将原始值从屏蔽文本框存储到另一个文本框
- xamarin.forms - 如何实现 RSA 密钥的 Xamarin.Android 非对称加密?
- react-native - 我无法使用 ffmpeg 在叠加层之上应用叠加层
- c# - 中止正在等待 Read() 语句的线程(C# 套接字编程)
- javascript - 获取 Post to API 失败
- python - Anaconda (Jupyter) 看不到文件 <.tar.bz2> 中以前安装的包