我有一个字符串“ foo [string] bar”,想从中提取“ string”,以消除之前和之后的所有内容。
我的grep没有-P选项,所以我尝试使用sed。
echo "foo [string] bar" | sed -n -e '/\[/,/\]/p'
我得到的是命令行中的完整字符串。
答案 0 :(得分:2)
第一个解决方案: :如果您对#region Namespaces
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Net.Mail; // Added
#endregion
namespace ST_ccd5e092bfdc417c8c29f1c22c390108
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void Main()
{
String SendMailFrom = Dts.Variables["mailfrom"].Value.ToString();
String SendMailTo = Dts.Variables["mailto"].Value.ToString();
String SendMailToName = Dts.Variables["mailname"].Value.ToString();
String SendMailSubject = Dts.Variables["mailsubject"].Value.ToString();
String SendMailBody = Dts.Variables["mailbody"].Value.ToString();
String SendMailAttach = Dts.Variables["vattach"].Value.ToString();
SendMailBody = SendMailToName + ",<p>" + SendMailBody;
String SmtpServer = Dts.Connections["SMTP Connection Manager"].Properties["SmtpServer"].GetValue(Dts.Connections["SMTP Connection Manager"]).ToString();
// Create an email and change the format to HTML
MailMessage myHtmlFormattedMail = new MailMessage(SendMailFrom, SendMailTo, SendMailSubject, SendMailBody);
myHtmlFormattedMail.IsBodyHtml = true;
// Create a SMTP client to send the email
SmtpClient mySmtpClient = new SmtpClient(SmtpServer);
if (String.IsNullOrEmpty(SendMailAttach))
{
//
}
else
{
myHtmlFormattedMail.Attachments.Add(new Attachment(SendMailAttach));
}
mySmtpClient.Send(myHtmlFormattedMail);
// Close Script Task with success
Dts.TaskResult = (int)ScriptResults.Success;
}
#region ScriptResults declaration
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
}
}
感到满意,那么请尝试以下操作。
awk
第二个解决方案: 使用echo "foo [string] bar" | awk -F"[][]" '{print $2}'
尝试:
sed
第三个解决方案:
echo "foo [string] bar" | sed 's/\([^[]*\)\[\([^]]*\)\(.*\)/\2/'
第四个解决方案: :考虑到这种情况,您的变量将只有1套echo "foo [string] bar" | awk '{sub(/[^[]*/,"");sub(/\[/,"");sub(/\].*/,"")} 1'
和[
,然后按照最简单的方法进行设置将为您提供帮助。
]
第五个解决方案: 在此处使用echo "foo [string] bar" | sed 's/.*\[//;s/\].*//'
的{{1}}功能。
match
答案 1 :(得分:0)
使用adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList);
listview.setAdapter(adapter); //crash (nullpointerexception pointing to nullobject)
:
grep
如果您的grep支持echo "foo [string] bar" | grep -oP '\[\K[^]]+'
string
(PCRE
标志),则可以使用正则表达式捕获-P
和[
之间的内容。
这是命令的详细信息:
]
:此标志将告诉grep仅打印匹配的正则表达式,而不打印整个匹配行。
-o
:这将启用-P
PCRE
:\[\K[^]]+
将允许在其左侧进行匹配,但不将其视为输出的一部分。 \K
的意思是,除了[^]]+
答案 2 :(得分:0)
echo "foo [string] bar" | awk '{gsub(/\[|\]/,"");print $2}'
string