Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

SmokingMouse/Regex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

7 Commits

Repository files navigation

Simple NFA-based regex engine.


0.0.1

  • 支持匹配字符范围 ASCII
  • 支持重复符 *,?,+(有限次匹配待实现)
  • 支持范围表示的字符 eg. [A-Z]可以表示大写字母中任意一个
  • 支持并联运算(|)和串联运算
  • match_all_text接口,若整个文本匹配正则表达式返回true,否则返回false
  • match_points接口,返回文本的index,表示文本的[0,index]能匹配正则表达式

下面是一个简单的实例。

match_all_text("abbacadaaefa", R"(((ab*|ac*)*|ad*|ef)*)");//返回true.
match_points("abbacadaaefa",R"(((ab*|ac*)*|ad*|ef)*)");
		//返回所有的index,表示任意index前的字串都能匹配

0.0.2

已实现

  • 重复符的有限次匹配(Finish!)
    • {m,n} 匹配m-n次
    • {m} 匹配m次
    • {m,} 匹配m-Max次
  • 为NFA做了个缓存,在试图以相同正则表达式来匹配时,节省构造NFA开销。

待实现

  • 0.0.1版本的一些数据结构的优化以及语法树的重构

0.0.3-???

  • 正向预查,反向预查,匿名捕获,命名捕获,命名检查,边界,贪婪,非贪婪(能不能实现看缘分吧:)

About

A simple NFA-based regex engine.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /