Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xindoo
regex
提交
a87d56e1
R
regex
项目概览
xindoo
/
regex
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
regex
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a87d56e1
编写于
5月 12, 2020
作者:
xindoo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
reformat codes
上级
d969fd8a
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
21 addition
and
12 deletion
+21
-12
src/main/java/xyz/xindoo/re/Regex.java
src/main/java/xyz/xindoo/re/Regex.java
+3
-0
src/main/java/xyz/xindoo/re/RegexTest.java
src/main/java/xyz/xindoo/re/RegexTest.java
+2
-2
src/main/java/xyz/xindoo/re/common/Reader.java
src/main/java/xyz/xindoo/re/common/Reader.java
+2
-1
src/main/java/xyz/xindoo/re/dfa/DFAGraph.java
src/main/java/xyz/xindoo/re/dfa/DFAGraph.java
+1
-0
src/main/java/xyz/xindoo/re/dfa/DFAState.java
src/main/java/xyz/xindoo/re/dfa/DFAState.java
+1
-1
src/main/java/xyz/xindoo/re/nfa/NFAGraph.java
src/main/java/xyz/xindoo/re/nfa/NFAGraph.java
+1
-0
src/main/java/xyz/xindoo/re/nfa/strategy/CharMatchStrategy.java
...in/java/xyz/xindoo/re/nfa/strategy/CharMatchStrategy.java
+1
-0
src/main/java/xyz/xindoo/re/nfa/strategy/CharSetMatchStrategy.java
...java/xyz/xindoo/re/nfa/strategy/CharSetMatchStrategy.java
+1
-1
src/main/java/xyz/xindoo/re/nfa/strategy/DigitalMatchStrategy.java
...java/xyz/xindoo/re/nfa/strategy/DigitalMatchStrategy.java
+1
-1
src/main/java/xyz/xindoo/re/nfa/strategy/DotMatchStrategy.java
...ain/java/xyz/xindoo/re/nfa/strategy/DotMatchStrategy.java
+1
-1
src/main/java/xyz/xindoo/re/nfa/strategy/EpsilonMatchStrategy.java
...java/xyz/xindoo/re/nfa/strategy/EpsilonMatchStrategy.java
+1
-1
src/main/java/xyz/xindoo/re/nfa/strategy/MatchStrategy.java
src/main/java/xyz/xindoo/re/nfa/strategy/MatchStrategy.java
+2
-1
src/main/java/xyz/xindoo/re/nfa/strategy/MatchStrategyManager.java
...java/xyz/xindoo/re/nfa/strategy/MatchStrategyManager.java
+1
-0
src/main/java/xyz/xindoo/re/nfa/strategy/SpaceMatchStrategy.java
...n/java/xyz/xindoo/re/nfa/strategy/SpaceMatchStrategy.java
+1
-1
src/main/java/xyz/xindoo/re/nfa/strategy/WMatchStrategy.java
src/main/java/xyz/xindoo/re/nfa/strategy/WMatchStrategy.java
+2
-2
未找到文件。
src/main/java/xyz/xindoo/re/Regex.java
浏览文件 @
a87d56e1
...
...
@@ -20,6 +20,7 @@ import java.util.Set;
public
class
Regex
{
private
NFAGraph
nfaGraph
;
private
DFAGraph
dfaGraph
;
public
static
Regex
compile
(
String
regex
)
throws
Exception
{
if
(
regex
==
null
||
regex
.
length
()
==
0
)
{
throw
new
Exception
(
"regex cannot be empty!"
);
...
...
@@ -29,10 +30,12 @@ public class Regex {
DFAGraph
dfaGraph
=
convertNfa2Dfa
(
nfaGraph
);
return
new
Regex
(
nfaGraph
,
dfaGraph
);
}
private
Regex
(
NFAGraph
nfaGraph
,
DFAGraph
dfaGraph
)
{
this
.
nfaGraph
=
nfaGraph
;
this
.
dfaGraph
=
dfaGraph
;
}
private
static
NFAGraph
regex2nfa
(
String
regex
)
{
Reader
reader
=
new
Reader
(
regex
);
NFAGraph
nfaGraph
=
null
;
...
...
src/main/java/xyz/xindoo/re/RegexTest.java
浏览文件 @
a87d56e1
...
...
@@ -21,8 +21,8 @@ public class RegexTest {
System
.
out
.
println
(
regex
.
isMatch
(
"a bcccdb"
,
1
));
System
.
out
.
println
(
regex
.
isMatch
(
"ab"
,
1
));
System
.
out
.
println
(
regex
.
isMatch
(
"abcd"
,
1
));
System
.
out
.
println
(
regex
.
isMatch
(
"a3abcd"
,
1
));
System
.
out
.
println
(
regex
.
isMatch
(
"a33333defd"
,
1
));
System
.
out
.
println
(
regex
.
isMatch
(
"a3abcd"
,
1
));
System
.
out
.
println
(
regex
.
isMatch
(
"a33333defd"
,
1
));
System
.
out
.
println
(
regex
.
isMatch
(
"aabcabcabcabcabcabcdb"
,
1
));
}
}
src/main/java/xyz/xindoo/re/common/Reader.java
浏览文件 @
a87d56e1
...
...
@@ -19,7 +19,8 @@ public class Reader {
}
return
chars
[
cur
++];
}
boolean
hasNext
()
{
public
boolean
hasNext
()
{
return
cur
<
chars
.
length
;
}
...
...
src/main/java/xyz/xindoo/re/dfa/DFAGraph.java
浏览文件 @
a87d56e1
package
xyz.xindoo.re.dfa
;
import
xyz.xindoo.re.common.State
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Set
;
...
...
src/main/java/xyz/xindoo/re/dfa/DFAState.java
浏览文件 @
a87d56e1
package
xyz.xindoo.re.dfa
;
import
xyz.xindoo.re.common.State
;
import
java.util.HashSet
;
import
java.util.Set
;
...
...
@@ -15,6 +14,7 @@ public class DFAState extends State {
public
DFAState
(
String
allStateIds
,
Set
<
State
>
states
)
{
this
.
allStateIds
=
allStateIds
;
this
.
nfaStates
.
addAll
(
states
);
for
(
State
state
:
states
)
{
if
(
state
.
isEndState
())
{
this
.
stateType
=
1
;
...
...
src/main/java/xyz/xindoo/re/nfa/NFAGraph.java
浏览文件 @
a87d56e1
...
...
@@ -5,6 +5,7 @@ import xyz.xindoo.re.common.Constant;
public
class
NFAGraph
{
public
NFAState
start
;
public
NFAState
end
;
public
NFAGraph
(
NFAState
start
,
NFAState
end
)
{
this
.
start
=
start
;
this
.
end
=
end
;
...
...
src/main/java/xyz/xindoo/re/nfa/strategy/CharMatchStrategy.java
浏览文件 @
a87d56e1
package
xyz.xindoo.re.nfa.strategy
;
public
class
CharMatchStrategy
extends
MatchStrategy
{
@Override
public
boolean
isMatch
(
char
c
,
String
edge
)
{
return
edge
.
charAt
(
0
)
==
c
;
...
...
src/main/java/xyz/xindoo/re/nfa/strategy/CharSetMatchStrategy.java
浏览文件 @
a87d56e1
package
xyz.xindoo.re.nfa.strategy
;
public
class
CharSetMatchStrategy
extends
MatchStrategy
{
public
class
CharSetMatchStrategy
extends
MatchStrategy
{
@Override
public
boolean
isMatch
(
char
c
,
String
charSet
)
{
boolean
res
=
false
;
...
...
src/main/java/xyz/xindoo/re/nfa/strategy/DigitalMatchStrategy.java
浏览文件 @
a87d56e1
package
xyz.xindoo.re.nfa.strategy
;
public
class
DigitalMatchStrategy
extends
MatchStrategy
{
public
class
DigitalMatchStrategy
extends
MatchStrategy
{
private
boolean
isReverse
;
public
DigitalMatchStrategy
(
boolean
isReverse
)
{
...
...
src/main/java/xyz/xindoo/re/nfa/strategy/DotMatchStrategy.java
浏览文件 @
a87d56e1
package
xyz.xindoo.re.nfa.strategy
;
public
class
DotMatchStrategy
extends
MatchStrategy
{
public
class
DotMatchStrategy
extends
MatchStrategy
{
@Override
public
boolean
isMatch
(
char
c
,
String
edge
)
{
return
c
!=
'\n'
&&
c
!=
'\r'
;
...
...
src/main/java/xyz/xindoo/re/nfa/strategy/EpsilonMatchStrategy.java
浏览文件 @
a87d56e1
package
xyz.xindoo.re.nfa.strategy
;
public
class
EpsilonMatchStrategy
extends
MatchStrategy
{
public
class
EpsilonMatchStrategy
extends
MatchStrategy
{
@Override
public
boolean
isMatch
(
char
c
,
String
edge
)
{
return
true
;
...
...
src/main/java/xyz/xindoo/re/nfa/strategy/MatchStrategy.java
浏览文件 @
a87d56e1
...
...
@@ -2,7 +2,8 @@ package xyz.xindoo.re.nfa.strategy;
public
class
MatchStrategy
{
protected
boolean
isReverse
=
false
;
public
boolean
isMatch
(
char
c
,
String
edge
){
public
boolean
isMatch
(
char
c
,
String
edge
)
{
return
false
;
}
}
src/main/java/xyz/xindoo/re/nfa/strategy/MatchStrategyManager.java
浏览文件 @
a87d56e1
...
...
@@ -7,6 +7,7 @@ import java.util.Map;
public
class
MatchStrategyManager
{
private
static
Map
<
String
,
MatchStrategy
>
matchStrategyMap
;
static
{
matchStrategyMap
=
new
HashMap
<>();
matchStrategyMap
.
put
(
"\\d"
,
new
DigitalMatchStrategy
(
false
));
...
...
src/main/java/xyz/xindoo/re/nfa/strategy/SpaceMatchStrategy.java
浏览文件 @
a87d56e1
package
xyz.xindoo.re.nfa.strategy
;
public
class
SpaceMatchStrategy
extends
MatchStrategy
{
public
class
SpaceMatchStrategy
extends
MatchStrategy
{
private
boolean
isReverse
;
public
SpaceMatchStrategy
(
boolean
isReverse
)
{
...
...
src/main/java/xyz/xindoo/re/nfa/strategy/WMatchStrategy.java
浏览文件 @
a87d56e1
...
...
@@ -2,8 +2,8 @@ package xyz.xindoo.re.nfa.strategy;
/**
* 匹配 \w和\W
*
*
/
public
class
WMatchStrategy
extends
MatchStrategy
{
*/
public
class
WMatchStrategy
extends
MatchStrategy
{
public
WMatchStrategy
(
boolean
isReverse
)
{
this
.
isReverse
=
isReverse
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录