我是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!一些文字!;
到目前为止,我提出了以下正则表达式
\![\w\s]*\!
=>找到!
[a-z]?[\s|,]? [\-|,| | | | | |0-9|-|\d+[\-|a-z]*\d*]*\![\w\s]*\!
=>这个选择连续两个;
\d+[-,]*[a-z]*\d+[a-z]*\s*[,]*
=>这个选择任何一种编号
但到目前为止,我无法将它们组合在一起以选择我想要的东西。
答案 0 :(得分:1)
如果我理解正确,您希望匹配由!
符号所界定的文本部分之前的模式。我认为确切的答案将取决于要匹配的模式。毕竟,它可能不适合正则表达式。
我创建了与问题中的表达式匹配的this示例(javascript)。
注意:强>
我对要匹配的模式做了一些假设。即,模式以数字开头,只能包含数字,短划线,逗号和字符a
。