我正在写一个正则表达式来截断第二个字段。我写了一个正则表达式,但它并不适用于所有情况。
数据:
qcst_macroPlayback.sh -play qcstTools/qcstOutFiles/qcst_out_macroPlayback_20500_12102017-131013.5574.xml
qcst_runningProcessesDetails.sh -LS
qcst_coreGrabber.sh DIR1
输出应为:
-play
-LS
DIR1
myregex:
^\S+_[^\.]+.sh(?<ScriptName2> [^\.]+ )
链接到测试正则表达式 https://regex101.com/r/P0Rnku/1
答案 0 :(得分:1)
您可以使用以下正则表达式:
^\S+_\S+\.sh\s+(?<ScriptName2>\S+)
或者,如果不需要检查_
,请将其缩短为
^\S+\.sh\s+(?<ScriptName2>\S+)
请参阅regex demo。
<强>详情
^
- 字符串开头(m
选项,行首)\S+
- 一个或多个非空格(如果您想确保此处只有1 _
,请将此替换为\S+
或[^\s_]+
或[^\s_]*
或_
取决于要求)_
- 必须至少有1 \S+
\.sh
- 一个或多个非空格.sh
- \s+
子字符串(?<ScriptName2>\S+)
- 1+空格ToggleButton sound;
MediaPlayer sip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sound = (ToggleButton) findViewById(R.id.Sound1);
sip = MediaPlayer.create(Naruto.this, R.raw.sip2);
sip.start();
sound.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
if (sound.isChecked() == true) {
sip.start();
} else {
sip.start();
}
}
});
}
- group&#34; ScriptName2&#34;:1个或多个非空格