Comments (4)
textX uses Python re
module for regex matches. Whatever you can match using re
module you can use in textX between slashes /..../
.
Assuming you are trying to parse a file with multiple records like the one you provided you could do something like this:
# -*- coding: utf-8 -*-
from textx import metamodel_from_str
grammar = '''
Model: records*=Record;
Record: num=/\d+-\d+/ name=/\w+\s+\w+/;
'''
mm = metamodel_from_str(grammar)
input = '''
2785-599 São Domingo
2785-599 São Domingo
'''
model = mm.model_from_str(input)
print(model.records)
print(model.records[0].name)
print(model.records[0].num)
Note that input
text should be interpreted as unicode. textX accepts unicode only. The example above is for Python 3.
from textx.
First of all, thanks for your quick response! I forgot to tell you that I am using Python 2.7. With this version, using:
re.U
re.UNICODE
makes the \w
sequence dependent on Unicode
from textx.
For Python 2 you can do this:
# -*- coding: utf-8 -*-
from textx import metamodel_from_str
grammar = '''
Model: records*=Record;
Record: num=/\d+-\d+/ name=/(?u)\w+\s+\w+/;
'''
mm = metamodel_from_str(grammar)
input = u'''
2785-599 São Domingo
2785-599 São Domingo
'''
model = mm.model_from_str(input)
print(model.records[0].name)
print(model.records[0].num)
Notice (?u)
at the beginning of name
regex match. This turns on the re.UNICODE
flag for that match.
There is also u
at the beginning of input
unicode string.
There was a slight problem with printing exceptions on syntax errors with unicode chars in Python 2. It should be fixed now on the master
branch so use that version.
from textx.
Great! Great job! Thank you so much for your help!
from textx.
Related Issues (20)
- Problem with relative rrel path evaluation in case of multiple model files HOT 10
- Cleanup / Loading imported models: when "importURI" does have an effect? HOT 1
- Can't create rule with \ character HOT 2
- Grammar extension: catching them all HOT 2
- Change separator in link rule references to `:` HOT 6
- Vendored six raises ImportWarning HOT 5
- Tests fail: No such file or directory: '/usr/ports/lang/py-textX/work-py39/textX-3.1.0/tests/functional/test_objcrossref_positions.model' HOT 1
- 25 tests fail HOT 2
- Is it possible to enable converting documents into PDF for offline reading
- Feature request: One case where error reporting could be improved - newline character (\n) HOT 3
- Feature request: Add rule descriptions, generate more informative user messages
- Feature request: One case where error reporting could be improved – "Not" case
- Question: How could I process some comments in my text but ignore others? HOT 1
- Import JSON as Part of a Metamodel HOT 1
- Python new grammar PEG and special operator HOT 2
- `pkg_resources` is deprecated HOT 2
- Support Click 8.0.0
- Please read this before asking questions
- Migrate examples to `flit_core` as well? HOT 4
- Feature request: TextXError gains length (or nchar) attribute
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from textx.