我正在尝试使用static string PostData(string token, List<KeyValuePair<string, string>> lsPostContent)
{
string response = String.Empty;
try
{
using (var client = new HttpClient())
{
FormUrlEncodedContent cont = new FormUrlEncodedContent(lsPostContent);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var resp = client.PostAsync("https://localhost:61086/api/<your API controller>/", cont);
resp.Wait(TimeSpan.FromSeconds(10));
if (resp.IsCompleted)
{
if (resp.Result.StatusCode == HttpStatusCode.Unauthorized)
{
Console.WriteLine("Authorization failed. Token expired or invalid.");
}
else
{
response = resp.Result.Content.ReadAsStringAsync().Result;
Console.WriteLine(response);
}
}
}
}
catch (Exception ex)
{
}
return response;
}
和grep
删除我对数据的变量标记。
我的数据看起来像这样:
sed
我的目标是仅提取标记为Please_VB make_VB it_PRP in_IN a_DT range_NN of_IN colored_JJ and_CC precise_JJR Skin_NN tone_NN shades_VBZ
,_NNS
,_NNP
,_NN
和_JJ
的字词。为了获得理想的结果:
_JJR
我现在使用的range
colored
precise
skin
tone
和grep
如下:
sed
然而,该命令行的结果是:
grep -oh "\w*_\(JJ\|NN\)\w*" test_file.txt | sed 's/[_JJ\|_NN\|_JJR\|_NNP\|_NNS]//g'
它正确地使用range
colored
precise
kin
tone
提取正确的字词,但grep
正在删除所有相应的字母,而不仅仅是sed
或_NX
的确切标记。
有没有什么方法可以使_JX
更准确地删除指定的确切标记而不是标记内的任何字母?
答案 0 :(得分:2)
您可以使用grep
和PCRE正则表达式提取这些值并使用前瞻:
grep -oP "\w+(?=_(JJR?|NN[PS]?))"
^^^^^^^^^^^^^^^^^^
请参阅online demo
详细:
\w+
- 一个或多个单词字符(字母,数字或下划线)...... (?=_(JJR?|NN[PS]?))
- 随后是
_
- 一个下划线和...... (JJR?|NN[PS]?)
- JJ
,JJR
,NN
,NNP
或NNS
子字符串。 P
中的-oP
选项会强制使用PCRE egnine,o
只会为您提供匹配。
答案 1 :(得分:2)
您可以使用grep
的POSIX -P
(不支持cut
选项):
grep -Eo '\w*_(NN[PS]?|JJR?)' file | cut -d_ -f1
range
colored
precise
Skin
tone
cut
用于在第一个下划线后删除部分。