相关疑难解决方法(0)

正则表达式:是否有AND运算符?

显然,您可以使用|(管道?)来表示OR,但有没有办法表示AND?

具体来说,我想匹配包含某个短语的所有文本的段落,但没有特定的顺序.

regex lookahead

656
推荐指数
14
解决办法
71万
查看次数

使用String.split()将带引号的csv文件拆分为文本分隔符

我有一个逗号分隔文件,其中许多行类似于下面的一行.

Sachin,,M,"Maths,Science,English",Need to improve in these subjects.
Run Code Online (Sandbox Code Playgroud)

引号用于转义用于表示多个值的分隔符逗号.

现在如何使用String.split()if来分割逗号分隔符上的上述值?

java csv split

51
推荐指数
3
解决办法
6万
查看次数

\ G如何在.split中工作?

我喜欢用Java编写代码高尔夫(即使Java方式太冗长而不具竞争力),它正在以尽可能少的字节完成一定的挑战.在我的一个答案中,我有以下代码:

for(var p:"A4;B8;CU;EM;EW;E3;G6;G9;I1;L7;NZ;O0;R2;S5".split(";"))
Run Code Online (Sandbox Code Playgroud)

在我们将它转​​换为带有的字符串数组后,它基本上遍历2-char字符串.split.有人建议我可以把它打到这个而不是节省4个字节:

for(var p:"A4B8CUEMEWE3G6G9I1L7NZO0R2S5".split("(?<=\\G..)"))
Run Code Online (Sandbox Code Playgroud)

功能仍然相同.它循环遍历2个字符串.

但是,我们都没有100%确定这是如何工作的,因此这个问题.


我知道的:

我知道.split("(?<= ... )")用于拆分,但保留尾随分隔符.
还有一种方法可以将前导分隔符或分隔符保留为分隔项:

"a;b;c;d".split("(?<=;)")            // Results in ["a;", "b;", "c;", "d"]
"a;b;c;d".split("(?=;)")             // Results in ["a", ";b", ";c", ";d"]
"a;b;c;d".split("((?<=;)|(?=;))")    // Results in ["a", ";", "b", ";", "c", ";", "d"]
Run Code Online (Sandbox Code Playgroud)

我知道\G用来在遇到不匹配后停止.
编辑:\G用于指示最后一个匹配结束的位置(或第一次运行的字符串的开头).修正了@SebastianProske的定义.

int count = 0;
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("match,");
java.util.regex.Matcher matcher = pattern.matcher("match,match,match,blabla,match,match,");
while(matcher.find())
  count++;
System.out.println(count); // Results in 5

count = 0;
pattern = java.util.regex.Pattern.compile("\\Gmatch,");
matcher = …
Run Code Online (Sandbox Code Playgroud)

java regex string split match

10
推荐指数
2
解决办法
666
查看次数

用于管理字符串文字等项目的转义字符的正则表达式

我希望能够将字符串文字与转义引用选项匹配.例如,我希望能够搜索"这是一个'转换''值'确定'的测试"并让它正确识别反斜杠作为转义字符.我尝试过如下解决方案:

import re
regexc = re.compile(r"\'(.*?)(?<!\\)\'")
match = regexc.search(r""" Example: 'Foo \' Bar'  End. """)
print match.groups() 
# I want ("Foo \' Bar") to be printed above
Run Code Online (Sandbox Code Playgroud)

看了这个之后,有一个简单的问题,即使用的转义字符" \"不能自行转义.我无法弄清楚如何做到这一点.我想要一个类似下面的解决方案,但负面的lookbehind断言需要固定长度:

# ...
re.compile(r"\'(.*?)(?<!\\(\\\\)*)\'")
# ...
Run Code Online (Sandbox Code Playgroud)

任何正则表达式大师都能解决这个问题吗?谢谢.

python regex

9
推荐指数
2
解决办法
7295
查看次数

标签 统计

regex ×3

java ×2

split ×2

csv ×1

lookahead ×1

match ×1

python ×1

string ×1