Chr*_*ran 0 java regex string android
我的问题是我想在字符串的某些部分删除字符,但我不知道如何限制删除.
例:
A computer is a general purpose device that can be\n
programmed to carry out a finite set of\n
millions to billions of times more capable.\n
\n
In this era mechanical analog computers were used\n
for military applications.\n
1.1 Limited-function early computers\n
1.2 First general-purpose computers\n
1.3 Stored-program architecture\n
1.4 Semiconductors and\n
Run Code Online (Sandbox Code Playgroud)
这里的例子是我的字符串的内容,我想要发生的是删除\n上面的第1行和第2行,但不删除第\n5行以后的内容.如何删除\n而不删除其他\n?.我的目标是使字符串成为一个没有\n后续行的段落.与示例一样,前3行可以是段落,下一行是子弹形式(示例).我所说的是我不想删除\n项目符号.
字符串的真实内容是动态的.
我已经尝试过String.replaceAll("\n", " ")清楚地使用它将无法正常工作它将删除所有\n我想Regex用来确定什么是Alphanumberic但它会删除一些字母之后\n
Roh*_*ain 10
尝试使用这个正则表达式: -
str = str.replaceAll("(.+)(?<!\\.)\n(?!\\d)", "$1 ");
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
\n如果它是not precededa dot - termination of a paragraph,它将替换你的a ,它是not followeda digit,当它后跟一个项目符号点时.(比如,你\n的第一个子弹点后跟一个1.2.所以,它不会被替换.).
(.+)一开始,确保你没有更换blank line.这适用于您显示的字符串.
说明: -
(.+) - >捕获组,捕获任何内容,至少发生一次.
(?<!\\.)- >这叫做negative-look-behind.它匹配string以下内容,只要该字符串前面没有模式中的dot(.)给定negative-look-behind.
例如: -您不需要在换\n行后更换: - millions to billions of times more capable.\n.
(?!\\d)- >这叫做negative -look-ahead.它匹配它后面的字符串,只有当该字符串后面没有digit (\\d)给定negative-look-ahead模式中的给定时.
例如: -在你的项目符号中,computers\n后跟1.2.哪里1是数字.所以,你不想替换它\n.
现在,$1并$2表示在模式匹配捕获的组.既然你只想更换"\n".因此,我们将剩余的模式匹配原样,同时替换"\n"为space.
所以,$1代表1st group-(.+)
注意,look-ahead和look-behind正则表达式的non-capturing群体.
有关详细信息,请访问以下链接: -
| 归档时间: |
|
| 查看次数: |
10940 次 |
| 最近记录: |