当前位置: 首页 > 知识库问答 >
问题:

更正RegEx以匹配字符串中的单词

汪信鸥
2023-03-14

我有这样一个字符串

“#影响@John@Me Lorem ipsum door sit amet,奉献给精英们,让他们暂时参与劳动和生活。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,还必须因工作原因而受到伤害

我需要以两种方式“拆分”,删除第一个单词,因为它以“#”开头(我可以做/已经做过),第二个我想不出来-我需要从字符串中删除所有以@开头的单词(在上面是@Me和@John),并将它们放入一个新数组中,这样我就有了字符串

“Lorem ipsum Door sit amet,为精英献身,为劳工等临时雇员提供服务……”

阵列呢

{@约翰,@我}

以“@foo”开头的单词可以是任意长度,但可能少于8或10个字符

我找不到/写不出正确的正则表达式。我正在使用jQuery。

共有1个答案

殳勇
2023-03-14

假设inputString是您的输入:

//remove all words starting with # (you had this already)
var s = inputString.replace(/#\w+\s*/g,'');  

var names = []; //names array to keep words with @
var match, rx = /@\w+/g; //regex, starts with @ followed by multiple word characters. g = all matches
while(match = rx.exec(s) ) //find all matches
  names.push(match[0]); //you could remove the name here, but it's easier to do the remove at the end to include spaces

//remove all words starting with @, including trailing spaces
var cleanstring = s.replace(/@\w+\s*/g,'');

运行后,名称将是包含所有@words的数组,cleanstring是不包含“特殊”单词的字符串。

您也可以选择在之后进行所有的“清洁”,但将其保留在示例中,因为您声明该部分正在工作。

要一次完成清理,您可以跳过#的第一个替换,在inputstring上执行上面的rx.exec,然后用以下方法清理整个字符串:var清洗字符串=inputString.replace (/(@|#)\w\s*/g,'');这将清除所有以#@开头的单词,包括尾部空格。

一些有用的正则表达式链接:

  • w3学校javascript正则表达式参考
  • 维基百科一般的正则表达式
 类似资料:
  • 问题内容: 我试图在问题历史记录中找到问题的答案,但是当他们浏览了几十个我放弃的匹配答案后,它们又回到了一千多个。所以这是我的问题。 我希望能够找到字符串中正好六个数字的第一个序列。给定字符串“一些文本987654321和一些更多的文本123456,以及其他一些文本再次654321和最后的更多文本”,我想找到与123456序列匹配的正则表达式。 我是regex的新手,对它如何工作的简短解释会很有帮

  • 我有这些线。我希望有一个正则表达式来匹配它们,并在将它们传递给preg_match函数时返回true。 如何在正则表达式中创建与上述模式匹配的模式?像这样: 星号(*)表示任何单词。这是我目前掌握的正则表达式模式: 格式在单词上不匹配。如何在单词上匹配字符串?

  • 我正在寻找一个可以在字符串1和字符串2中为abc.xyz返回true的regex。注意字符串值可以从abc.xyz更改为mnp.pqr 我尝试使用这个,但它与字符串2不匹配。

  • 我尝试了这种模式,但发现第一个匹配的句子带有符号

  • 问题内容: 我认为我遇到了一个听起来比实际容易的问题……我不太确定。我想定义一个正则表达式,并且要构建一些与之匹配的字符串。 我可以导入具有该功能的任何模块吗?最好不要使用或暴力破解方法。必须有一种更优雅的方法来做到这一点。 问题答案: 我一直在研究一个小的帮助程序库,用于使用Python生成随机字符串 它包含一个方法,该方法允许您从正则表达式创建字符串: 目前,它适用于大多数基本正则表达式。

  • 我正在寻找正确的regex来为我提供以下结果: null 例子: 福吧 组1:foo 组2:bar 说明:在空格上拆分 组1:foo bar 描述:用双引号包围,所以将foo和bar分组,但不要打印双引号 null null null null null 组1:foo bar 组2:堆栈溢出 组1:foo'bar 组2:堆栈溢出 组3:如何 组4:do 组5:您 组6:do