我有一个以下function dpdt = state( t,p, vgth)
smooth=1;
vg=t;
k=10^-1;
window1=1-((2*p)-1).^(2*smooth);
dpdt=k*(vg+vgth)*window1;
字符串,我必须过滤它以获得所谓的原始句子。
{ “订阅”:[ “消息”, “句子”, “ ANYTEXTWITHANYLENGTHHEREINCLUDINGNUMBERSDOTS ; \ r \ n \”]}
不允许对global
json
进行反序列化!
我确实使用以下json
过滤了搜索到的文本:
string
或(因为它必须在java代码中转义):
regular expression
如果我使用((?<=\{\"subscribe\":\[\"message\",\"sentence\",")(.*)(?=;))
并在String pattern = "(?<=\\{\"subscribe\":\\[\"message\",\"sentence\",\")(.*)(?=;)";
语句中进行迭代,则此功能非常有效:
Matcher.find()
不幸的是,整个代码都是由我们的教授给出的。他确实围绕着整个代码:
while
由于while (_regexMatcher.find()) {
matches.add(_regexMatcher.group()); //Add to List<String>
}
在整个模式的beginnen中使用if (Pattern.matches(pattern, json)) {
...
}
模式,在结尾使用Pattern.matches()
,因此它不会找到任何匹配项。
还有另一种方法来获取 ANYTEXTWITHANYLENGTHHEREINCLUDINGNUMBERSDOTS 以便^
返回true吗?
答案 0 :(得分:1)
您可以尝试:
[\s\S]*(?<=\{"subscribe":\["message","sentence",")(.*)(?=;)[\s\S]*
[\s\S]*
将匹配之前和之后的所有内容,因此整个字符串将匹配,但仅限于内部有(?<=\{"subscribe":\["message","sentence",")(.*)(?=;)
。
答案 1 :(得分:0)
while (in_file.hasNextLine())
{
one_line = in_file.nextLine();
tokens = one_line.split("\\P{Alpha}+");
for (i = 0; i < tokens.length; i++)
{
//do whatever;
}
这里有更详细的信息 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
答案 2 :(得分:0)
只需添加。*?在你的正则表达式前面。它会不情愿地匹配(与贪婪的*相反),这意味着它会在达到你之前的json模式时停止匹配,这应该像以前一样工作