Java HPUXPARISC中物理内存的正则表达式
输入Java HPUXPARISC中物理内存的正则表达式,java,regex,Java,Regex,输入 grep "Physical" /var/adm/syslog/syslog.log 输出 May 4 21:07:00 getz vmunix: Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes 或者从下面找到我6289408 May 4 21:07:00 getz vmunix: Physical: 6289408 Kbytes 我想要Physical:
grep "Physical" /var/adm/syslog/syslog.log
输出
May 4 21:07:00 getz vmunix: Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes
或者从下面找到我6289408
May 4 21:07:00 getz vmunix: Physical: 6289408 Kbytes
我想要Physical:
的值,只需要数字,如何在简单的正则表达式中做到这一点我正在使用java(但我这里只需要正则表达式)
注意:您可以为我测试正则表达式
更新
让我把问题说得更清楚些
May 4 21:07:00 getz vmunix: Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes
这是我使用命令
grep“physical”/var/adm/syslog/syslog.log
获取physical:(\d+)
以下是java解决方案:
public static void main(String[] args)
{
String input = " May 4 21:07:00 getz vmunix: Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes";
String regex = "^.*Physical: (\\d*) .*$"; // <-- LOOK HERE FOR REGEX!
String physical = input.replaceAll(regex, "$1"); // <-- How to extract group 1 in java
System.out.println(physical); // "6289408"
}
捕获
物理组的第1组:(\d+)
以下是java解决方案:
public static void main(String[] args)
{
String input = " May 4 21:07:00 getz vmunix: Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes";
String regex = "^.*Physical: (\\d*) .*$"; // <-- LOOK HERE FOR REGEX!
String physical = input.replaceAll(regex, "$1"); // <-- How to extract group 1 in java
System.out.println(physical); // "6289408"
}
使用awk
awk '{print $7}' input
6289408
削减
perl
在更新中,您添加了java;下面是一个工作示例:
import java.util.regex.*;
public class SimpleRegexTest {
public static void main(String[] args)
{
String sampleText = " May 4 21:07:00 getz vmunix: Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes";
String sampleRegex = "Physical: (\\d+)";
java.util.regex.Pattern p = java.util.regex.Pattern.compile(sampleRegex);
java.util.regex.Matcher m = p.matcher(sampleText);
if (m.find()) {
String matchedText = m.group(1);
System.out.println(matchedText);
} else {
System.out.println("didn't match");
}
}
}
给出:
$ java SimpleRegexTest
6289408
使用awk
awk '{print $7}' input
6289408
削减
perl
在更新中,您添加了java;下面是一个工作示例:
import java.util.regex.*;
public class SimpleRegexTest {
public static void main(String[] args)
{
String sampleText = " May 4 21:07:00 getz vmunix: Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes";
String sampleRegex = "Physical: (\\d+)";
java.util.regex.Pattern p = java.util.regex.Pattern.compile(sampleRegex);
java.util.regex.Matcher m = p.matcher(sampleText);
if (m.find()) {
String matchedText = m.group(1);
System.out.println(matchedText);
} else {
System.out.println("didn't match");
}
}
}
给出:
$ java SimpleRegexTest
6289408
(物理\:\s\d{0,10})
这比\d+更好(物理\:\s\d{0,10})
这比\d+@Bohemian要好:我只需要正则表达式,我有java代码可以解析正则表达式并显示结果。检查我更新的qn。帮我弄到正则表达式:)谢谢你的java代码。。但我已经准备好了java代码。我只是在写插件,我只需要提供正则表达式,它会给我返回结果。所以我希望得到一个
正则表达式
,让我得到物理:
的值你真的读过我的答案了吗?里面有正则表达式@波希米亚人:看一看,我试过你的正则表达式,但似乎不起作用。@Abhishek Simon注意到我捕获的是组$1
(或者$2
),而不是整个正则表达式。对于只捕获大小的整洁正则表达式,请使用以下命令:(?@Bohemian:我只需要正则表达式,我有java代码可以解析正则表达式并显示结果。请检查我更新的qn。请帮我获取正则表达式:)感谢java代码。。但我已经准备好了java代码。我只是在写插件,我只需要提供正则表达式,它会给我返回结果。所以我希望得到一个正则表达式
,让我得到物理:
的值你真的读过我的答案了吗?里面有正则表达式@波希米亚人:看一看,我试过你的正则表达式,但似乎不起作用。@Abhishek Simon注意到我捕获的是组$1
(或者$2
),而不是整个正则表达式。对于只捕获大小的整洁正则表达式,请使用以下命令:(?@Fredrik:我如何使用lookahead忽略直到物理:
?那么可能我可以得到它:)@Fredrik:感谢java代码。。但我已经准备好了java代码。我只是在写插件,我只需要提供正则表达式,它会给我返回结果。所以我希望得到一个regex
,它能让我物理:
的值见上面第7行和第11行;还是我完全忽略了你的问题?regexp是Physical:(\\d+”
,您可以使用m.group(1)提取值
@Fredrik:不需要java代码。转到这里,您可以粘贴我的输出并返回物理:
的值。例如,我只需要一个正则表达式,即获取大于2的第一个数值digits@Fredrik:我如何使用lookahead忽略直到物理:
?那么可能我可以得到它:)@Fredrik:谢谢你的java代码。。但是我已经准备好了java代码。我正在编写插件,只需要提供正则表达式,它就会返回结果。所以我希望得到一个regex
,它能让我物理:
的值见上面第7行和第11行;或者我完全没有回答你的问题?regexp是物理:(\\d+)
然后使用m.group(1)
@Fredrik提取值:不需要java代码。转到这里,您可以粘贴我的输出并返回物理:
的值。i、 例如,我只想要一个正则表达式,即获取第一个数值大于2个连续数字。为什么我首先用正确的整洁单行解决方案回答,而另一个代码更差的人(代码更多,但没有更多值)得到了勾号和投票???为什么我首先用正确的整洁单行解决方案回答,但是另一个有着更糟糕代码(更多代码却没有更多价值)答案的人得到了选票???