Regex 正则表达式固定前缀
我有正则表达式字符串,我想分类,这个正则表达式有固定前缀还是没有 例如:Regex 正则表达式固定前缀,regex,Regex,我有正则表达式字符串,我想分类,这个正则表达式有固定前缀还是没有 例如: abcdef.*g[0abc]{0,5}hi具有前缀abcdef ]1234vac.*12345具有前缀]1234vac (abc)+123有前缀abc 但是 [A-z]+12345没有固定前缀(它从集合A-z中未知数量的符号开始) 我真的明白这个问题不会以一般形式解决吗?试试这个正则表达式: ^( ( # GENERAL before . (Dot) (?!\w+\?)
abcdef.*g[0abc]{0,5}hi
具有前缀abcdef
]1234vac.*12345
具有前缀]1234vac
(abc)+123
有前缀abc
但是
[A-z]+12345
没有固定前缀(它从集合A-z中未知数量的符号开始)
我真的明白这个问题不会以一般形式解决吗?试试这个正则表达式:
^(
( # GENERAL before . (Dot)
(?!\w+\?) # DO NOT MATCH if contains ?
[\w\]\)]+ # Word, ] or ) characters 1 or more times
)|
(?:\((\w+)\))| # Words in between BRACKETS ()
( # BEFORE . (Dot) with ?, * or +
[\w\]\)]+ # Select Characters
(?![?*+]) # DO NOT select last character if there is ?, * or + after it
)
)
告诉我任何其他不起作用的例子,我会改变这一点。不过,我已经测试了您问题中的所有示例和评论
还有,怎么可能想出这么复杂的问题<代码>;)您想从这些字符串中获取前缀吗?前缀是以“.”结尾的任何字符?@diviadero,不,我认为前缀是以任何非excape regex特殊符号结尾的任何字符
12345[abcde]+12345
前缀是12345,但以[
结尾。甚至可能很强(这个示例显示了有趣的情况):123-456
前缀是12
,但是123-456
有前缀123-456
…我想你已经找到了一个通用的解决方案。前缀是“一切都固定”。我不确定我是否正在追赶,但以防万一[a-z]+
,它保证至少有一个类中的字符。但是,如果*
不保证存在。干得好!你的解决方案并没有涵盖所有情况,但它看起来像是我想要的。@DenisGavrus如果你告诉我它没有涵盖什么,我可以更改它。另外,如果它回答了你的问题,你介意接受它吗?我想不会一般来说,使用regex解决这个问题是不可能的,因为它有很多大小写、转义特殊字符和其他(从regexhttp:\/\/stackoverflow\.com
中获取前缀http:\/\/stackoverflow\.com\/.\/[\d]+
是很完美的,但我知道用regex也几乎不可能做到这一点(我的任务不是解析url,这只是一个示例))例如,您的解决方法是从regex(abc)*
中获取前缀abc
,但它不是前缀,因为*-{0,}也会重复(abc)?
。不过还是要谢谢你,如果没有其他答案,我以后会接受你的回答answers@DenisGavrus这是很难做到与正则表达式,谢谢!