提取数字后跟特定文字

时间:2017-04-23 19:40:14

标签: regex regex-negation

我是Regex的新手,我正在寻找一个正则表达式来提取任何类型的数字(如23,23a,24-26),紧接着是一个被!包围的文本。

更多解释: 需要匹配数字(简单数字,由短划线或数字后跟字母(a,b,c,d,..)分隔的数字范围),紧跟其后(忽略逗号)和包围的文字by!

例如在下面的文字中,我正在寻找我制作的部分 Italic

  

46-58!一些文字!; ,5一些文字,3-21,6-22一些文字,16一些文字!一些文字! ; 46-58一些文字, 5!一些文字!; 3-21,6-22一些文字,16个文字,一些文字!一些文字! ; 46-58一些文字,一些文字, 3-21,23a,6-22!一些文字!;

为了更清楚,我制作了我感兴趣的文字Red。 enter image description here

到目前为止,我提出了以下正则表达式

\![\w\s]*\! =>找到!

包围的文字

[a-z]?[\s|,]? [\-|,| | | | | |0-9|-|\d+[\-|a-z]*\d*]*\![\w\s]*\! =>这个选择连续两个;

之间的所有内容

\d+[-,]*[a-z]*\d+[a-z]*\s*[,]* =>这个选择任何一种编号

但到目前为止,我无法将它们组合在一起以选择我想要的东西。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望匹配由!符号所界定的文本部分之前的模式。我认为确切的答案将取决于要匹配的模式。毕竟,它可能不适合正则表达式。

我创建了与问题中的表达式匹配的this示例(javascript)。

注意: 我对要匹配的模式做了一些假设。即,模式以数字开头,只能包含数字,短划线,逗号和字符a