【发布时间】:2015-07-21 22:55:46
【问题描述】:
我在 java 中创建正则表达式时遇到了一些问题,我希望它匹配字符串中包含单个 ; 且字符串中没有一个 ;; 的所有部分。
例如在字符串today;i;;drank water 中,今天之后的; 将是匹配项,而;; 将不是匹配项。到目前为止,我已经尝试使用正则表达式 ;{1} 来表示匹配一个且只有一个 ;。
但它一直匹配双精度 ;;。正则表达式;{1,2} 也是如此,它表示匹配一个;,但不匹配两个或更多;。两个正则表达式都属于 greedy 类型。我也在使用带有String.split(regular expression) java 函数的正则表达式。
任何人都可以帮助解决可能出现的问题,或者如果我对正则表达式形成的理解有点偏离,为什么我的正则表达式不能正常工作?
另外值得注意的是,我从拆分中得到的输出与 today;i;;drank water 一样
today
i
drank water
如果拆分数组字符串中有空格,则为第三个元素。
【问题讨论】:
-
你知道格式化文本可以减少麻烦吗?
-
你不想在第二部分匹配 ;d?
-
不知道是不是合法表达,你可以试试;{1,1}
-
@Suspended 得到相同的输出,但值得一试
-
@Suspended: 是,但也没用(和
;的;{1}一样)
标签: java regex string split regex-greedy